使用下载管理器

时间:2017-04-15 06:18:19

标签: android uri android-download-manager android-internal-storage

想要使用Uri在getFilesDir()中存储音乐文件。我试图通过这种方式存储

Uri Download_Uri = Uri.parse(songBean.vSongsFileName);
DownloadManager.Request request = new DownloadManager.Request(Download_Uri);
mDownloadManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE);
request.setAllowedOverRoaming(false);
request.setTitle(songBean.vTitle);
request.setDescription("Downloading File");

    try {
    request.setDestinationUri(Uri.parse(createDirectory("tmp.mp3").getPath()));
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

    request.allowScanningByMediaScanner();
    request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
    downloadReference = mDownloadManager.enqueue(request);
    registerReceiver(new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {

        }
    }, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));

内部存储中创建目录的方法

public File createDirectory(String filename) throws FileNotFoundException {
    File file = new File(context.getFilesDir(), filename);
    Log.i("Tag", "createDirectory: " + file.getAbsolutePath());
    return file;
}

无法将文件存储在内部存储空间中。request.setDestinationUri(Uri.parse(createDirectory("tmp.mp3").getPath()));抛出not a file uri错误。请帮我解决此问题

1 个答案:

答案 0 :(得分:0)

getFilesDir()仅适用于您的应用的私有内部存储空间。你不能要求另一个应用程序将文件放在那里,因为它没有访问权限。

对于DownloadManager,请使用外部存储。