2014-07-03 22 views
1

我想直接下載一個大的zip文件的外部存儲目錄中,例如下載管理器直接插入外部存儲目錄

"/mnt/sdcard/Android/data/com.vexdev.audioguida.app/files/data" 

我想我應該用

DownloadManager.Request.setDestinationInExternalPublicDir(path, fileName) 

但我不知道如何爲它提供一個在不同的android設備上保持一致的路徑。

,我也試圖讓一個路徑後訪問此文件,像這樣:

File file = new File(path + fileName); 

我這麼問是因爲我知道,這兩種方法都期待不同的根路徑,因爲我試圖提供這樣的路徑:

Application.getAppContext().getExternalFilesDir(Environment.getDataDirectory().getAbsolutePath()).getAbsolutePath(); 

但DownloadManager沒有把文件放在後面的文件構造函數搜索它。 (它實際上是在錯誤的目錄下載!)

我正在尋找一種方法,直接下載這些文件在正確的目錄,而不必移動它們。

回答

4

我想我應該用DownloadManager.Request.setDestinationInExternalPublicDir(路徑,文件名)

不適合你建議的位置。更接近的匹配將是setDestinationInExternalFilesDir()

但我不知道如何提供一個在不同的android設備上保持一致的路徑。

甚至沒有一個路徑在一臺設備中保持一致,因爲不同的帳戶將使用不同的路徑。例如,您輸入到您的問題的路徑可能是可用於某些設備對於某些帳戶,但詳情會有所不同。

我也試圖讓一個路徑訪問此文件後

即覆蓋DownloadManager.Request文檔中:

  • setDestinationInExternalFilesDir()映射到getExternalFilesDir()Context

  • setDestinationInExternalPublicDir()映射到 Environment

我試圖提供這樣

的路徑這不是你如何使用getExternalFilesDir()。請閱讀the JavaDocs查看該方法參數的有效值。 getDataDirectory()不是有效值。

+0

你說得對,我應該看看文檔更好。我希望得到像你這樣的答案。 –