'get/setDestination' 目录的不同值

Different value for 'get/setDestination' Directory

在模拟器中测试

起初我以这种形式创建一个目录:

            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");

那个return这个路径:/storage/emulated/0/storage/emulated/0/SubFolderName/

先试试看:

 request.setDestinationInExternalFilesDir(getActivity(), root.getAbsolutePath() + "/" + "SubFolderName","FileName");

此部分重复:storage/emulated/0

我检查了我的代码,但没有错误。

您正在使用 setDestinationInExternalPublicDir(),据我所知here它已经添加了外部根目录,因此您只需指定目录类型、子路径和文件名。

示例:

request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOCUMENTS,"SubFolderName/FileName");

希望我没有看错。

您没有指定外部存储中的哪个目录。

根据存储的内容,您可以使用多个目录,例如 "Downloads"、"Video"

您可以像这样使用下载目录,例如:

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());