2012-08-30 80 views
3

我正在开发一个应用程序,其中我从远程服务器下载PDF文件的过程。我非常成功地通过应用程序在手机上下载PDF文件。我面临的问题是下载的文件在Galaxy Nexus上的下载目录中不可见。当我使用文件管理器应用程序时,我可以在那里看到文件,它打开真正好。从Android应用下载的文件不可见下载目录

我用我的代码下面的选项,但他们都不似乎解决我的问题(这两个选项成功下载该文件,其文件管理器中可见)的尝试:

outFile = new File(Environment.getExternalStorageDirectory() + "/" + fileName); 

而且

outFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), fileName); 

有人能帮我一些线索吗?任何提示或线索都会有很大的帮助。

+1

尝试使用[下载管理器](http://developer.android.com/reference/android/app/DownloadManager.html ),不确定是否可以下载文件,否则进入下载列表 – zapl

+0

看看这个方法addCompletedDownload here http://developer.android.com/reference/android/app/DownloadManager.html – petey

+1

当你说下载目录,你的意思是下载应用程序?你说你可以通过文件管理器看到 – nandeesh

回答

2

我能够以下列方式使用下载管理器来做到这一点:

dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); 
    Request request = new Request(
      Uri.parse("http://")); 
    enqueue = dm.enqueue(request); 

    BroadcastReceiver receiver = new BroadcastReceiver() { 
      @Override 
      public void onReceive(Context context, Intent intent) { 
       String action = intent.getAction(); 
       if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)) { 
        long downloadId = intent.getLongExtra(
          DownloadManager.EXTRA_DOWNLOAD_ID, 0); 
        Query query = new Query(); 
        query.setFilterById(enqueue); 
        Cursor c = dm.query(query); 
        if (c.moveToFirst()) { 
         int columnIndex = c 
           .getColumnIndex(DownloadManager.COLUMN_STATUS); 
         if (DownloadManager.STATUS_SUCCESSFUL == c 
           .getInt(columnIndex)) { 
          Toast.makeText(getApplicationContext(), "Download Complete!!!", Toast.LENGTH_LONG).show(); 

         } 
        } 
       } 
      } 
     }; 

     registerReceiver(receiver, new IntentFilter(
       DownloadManager.ACTION_DOWNLOAD_COMPLETE));