2012-08-30 82 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));