2017-04-18 208 views
0

我正在開發應用程序並使用內置的Android下載管理器類。我想將文件下載到名爲「myApp」的文件夾中(文件夾已存在)。這是我試過的。我也嘗試了不同的方法來設置下載位置,但他們不工作。請幫助解決這個問題。無法設置Android下載管理器下載文件的位置並且無法獲取真實文件名

DownloadManager mgr = (DownloadManager) this.getSystemService(Context.DOWNLOAD_SERVICE); 

     boolean isDownloading = false; 
     DownloadManager.Query query = new DownloadManager.Query(); 
     query.setFilterByStatus(
       DownloadManager.STATUS_PAUSED| 
         DownloadManager.STATUS_PENDING| 
         DownloadManager.STATUS_RUNNING| 
         DownloadManager.STATUS_SUCCESSFUL 
     ); 
     Cursor cur = mgr.query(query); 
     int col = cur.getColumnIndex(
       DownloadManager.COLUMN_LOCAL_FILENAME); 
     for(cur.moveToFirst(); !cur.isAfterLast(); cur.moveToNext()) { 
      isDownloading = isDownloading || ("local file path" == cur.getString(col)); 
     } 
     cur.close(); 

     if (!isDownloading) { 
      Uri source = Uri.parse(myWebsites[j]); 

      Uri dst_uri = Uri.parse("file:///mnt/sdcard/Signagee"); 

      DownloadManager.Request request = new DownloadManager.Request(source); 

      request.setDestinationUri(dst_uri); 
      request.setNotificationVisibility(
        DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED 
      ); 
      request.allowScanningByMediaScanner(); 

      long id = mgr.enqueue(request); 
     } 
+0

不要使用類似'到/ mnt/SD卡/'硬編碼路徑。使用'環境'類 –

+0

你能幫助獲取文件名嗎? – venura

回答

2

使用此

request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName); 

所有下載將下載文件夾獲取下載。您可以從Environment類中選擇任何其他目標。

要獲取文件名檢查該

String filePath = c.getString(c.getColumnIndex(DownloadManager.COLUMN_LOCAL_FILENAME)); 
     filename = filePath.substring(filePath.lastIndexOf('/')+1, filePath.length()); 

使用此filename在上述行

+0

非常感謝。有用。但是我仍然無法獲得下載文件的真實文件名。 @Sallu。請幫忙 – venura

+0

@Sallu-是的,我也找到了這個答案,並嘗試像這樣 for(cur.moveToFirst();!cur.isAfterLast(); cur.moveToNext()){ isDownloading = isDownloading || (「本地文件路徑」== cur.getString(col)); title = cur.getString(cur.getColumnIndex(DownloadManager.COLUMN_TITLE)); String filePath = cur.getString(cur.getColumnIndex(DownloadManager.COLUMN_LOCAL_FILENAME));文件路徑.substring(filePath.lastIndexOf('/')+ 1,filePath.length()); } 但我不能使用'文件名'循環外 – venura

+0

完成。但是你能幫我解答題目嗎?我在 – venura