DownloadManager getFilesDir()

时间:2017-03-30 15:55:04

标签: java android android-download-manager

我需要将文件下载到设备的内部存储器中。我是这样做的:

Uri downloadUri = Uri.parse(url);
DownloadManager.Request request = new DownloadManager.Request(downloadUri);
request.setDestinationInExternalFilesDir(getContext(),getContext().getFilesDir().getAbsolutePath(), name);

文件加载成功。我需要检查这个文件的存在,所以我不必再次下载它:

File file = new File(getContext().getFilesDir().getAbsolutePath(), name);
if (!file.exists()) {
   ...
}

检查不起作用,文件总是再次加载。 我还尝试获取MediaPlayer()

的文件
String path = "file://" + getContext().getFilesDir().getAbsolutePath() + File.separator + name;
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(getContext(), Uri.parse(path));

这也行不通...... 我做错了什么?

1 个答案:

答案 0 :(得分:0)

您正在将文件保存到设备内部存储器,但在尝试获取您正在应用程序的私人存储器中搜索的文件时。这与下载本地不同

<强> setDestinationInExternalPublicDir

  

DownloadManager.Request setDestinationInExternalPublicDir(String dirType,                   String subPath)   将下载文件的本地目标设置为公共外部存储目录中的路径(由getExternalStoragePublicDirectory(String)返回)。

     

MediaScanner不会扫描下载的文件。但是可以通过调用allowScanningByMediaScanner()来进行扫描。

<强> getFilesDir

文件getFilesDir()

  

返回文件系统上目录的绝对路径,其中存储使用openFileOutput(String,int)创建的文件。

     

如果将调用应用程序移动到已采用的存储设备,则返回的路径可能会随时间发生变化,因此只应保留相对路径。

     

调用应用程序无需其他权限即可在返回的路径下读取或写入文件。