设置自定义文件夹Android Download Manager

bot*_*t91 25 android download download-manager

我有一个关于下载管理器的问题.我要从网站下载文件.当我设置下载的默认目录(Environment.DIRECTORY_DOWNLOAD)时,一切正常,我的下载开始了.但是,如果我尝试更改目录,我的应用程序不会下载该文件.特别是,我希望我的文件进入下载文件夹,例如/ storage/sdcard/Download/myFolder.我该如何解决这个问题?

File mydownload = new File (Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+ "/myFolder");

if (!mydownload.exists()){
    mydownload.mkdir();
}

String url = sUrl[0];
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
    request.allowScanningByMediaScanner();
    request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
}

request.setDestinationInExternalPublicDir(mydownload.getAbsolutePath(),"Myfile.extension");


DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
manager.enqueue(request);
Run Code Online (Sandbox Code Playgroud)

Dha*_*mar 89

检查下面的代码:它的保存文件"sdcard/dhaval_files/".只需替换您的文件夹名称并write_external_storage在android清单文件中授予权限.

public void file_download(String uRl) {
        File direct = new File(Environment.getExternalStorageDirectory()
                + "/dhaval_files");

        if (!direct.exists()) {
            direct.mkdirs();
        }

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

        Uri downloadUri = Uri.parse(uRl);
        DownloadManager.Request request = new DownloadManager.Request(
                downloadUri);

        request.setAllowedNetworkTypes(
                DownloadManager.Request.NETWORK_WIFI
                        | DownloadManager.Request.NETWORK_MOBILE)
                .setAllowedOverRoaming(false).setTitle("Demo")
                .setDescription("Something useful. No, really.")
                .setDestinationInExternalPublicDir("/dhaval_files", "test.jpg");

        mgr.enqueue(request);

    }
Run Code Online (Sandbox Code Playgroud)

  • @ Dr.aNdRO:这是你的答案:http://stackoverflow.com/a/17112536/1168654和http://stackoverflow.com/a/13056375/1168654 (3认同)

zap*_*.10 11

您可以使用两种选项.

1)首先setDestinationInExternalPublicDir这将让你在任何一个orroids标准下载文件夹中下载基于媒体类型的文件,例如DIRECTORY_DOWNLOADS,DIRECTORY_MUSIC.卸载后这些文件将保留.

request.setDestinationInExternalPublicDir(DIRECTORY_DOWNLOADS,
        File.separator + folderName + File.separator + fileName);
Run Code Online (Sandbox Code Playgroud)

第一个参数应该是一个标准的下载目录,以使其正常工作,不能是其他任何东西.

2)第二个是setDestinationInExternalFilesDir这与前一个方法相同,区别在于这些文件将在app卸载后删除.

request.setDestinationInExternalFilesDir(context, DIRECTORY_DOWNLOADS, 
        File.separator + folderName + File.separator + fileName);
Run Code Online (Sandbox Code Playgroud)

这里第二个参数可以是null或任何android下载目录.