在模拟器中测试
首先,我以这种形式创建一个目录:
File root = android.os.Environment.getExternalStorageDirectory();
File dir = new File(root.getAbsolutePath() + "/" + "SubFolderName");
if (!dir.exists()) {
dir.mkdirs();
在此路径中创建目录:/storage/emulated/0/SubFolderName
现在,我需要将此路径用于下载文件,因此请添加以下代码:
DownloadManager.Request request = new DownloadManager.Request(uri);
request.setDestinationInExternalPublicDir(root.getAbsolutePath() + "/" + "SubFolderName","FileName");
返回此路径:/storage/emulated/0/storage/emulated/0/SubFolderName/
在此之前尝试:
request.setDestinationInExternalFilesDir(getActivity(), root.getAbsolutePath() + "/" + "SubFolderName","FileName");
重复此部分:storage/emulated/0
我检查了我的代码,但没有错误。
答案 0 :(得分:0)
您正在使用setDestinationInExternalPublicDir(),因为我可以阅读here它已经添加了外部根目录,因此您只需要指定目录类型,子路径和文件名。
示例:
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOCUMENTS,"SubFolderName/FileName");
希望我没错。
答案 1 :(得分:0)
您没有指定外部存储中的哪个目录。
根据您的存储情况,您可以使用多个目录,例如"下载","视频"
您可以像下面这样使用下载目录:
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).mkdirs();
Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_DOWNLOADS + "/" + "SubFolderName/" + mTedListModel.get(position).getTitle()).mkdirs();
然后使用请求管理器设置目的地为
.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, + "SubFolderName/" + mTedListModel.get(position).getTitle());