android - 将应用程序从 28 定位到 29 后的 Android 下载管理器 - setDestinationInExternalPublicDir() - 不是标准目录之一:MyDir/videos/
问题描述
我在 Play 商店中有应用程序,目标版本为 28。在应用程序中,我使用了下载管理器,它将文件下载到自定义目录。现在根据 Play 商店要求政策,应用程序目标版本应更新为 29。因此,我已更新为 29,但之后当我尝试下载文件时,下载管理器在Android 10(Q)中出现以下错误。
不是标准目录之一:MyDir/videos/
我已经阅读了一些解决方案,发现它只允许存储在公共目录中,如 DIRECTORY_DOWNLOADS、DIRECTORY_DCIM 等。但问题是,在当前的实时应用程序中,它从存储用户当前下载数据的 MyDir/videos/ 读取,如果我将路径更改为会导致很多问题的其他目录。所以我正在寻找解决方案,使用它我可以在与当前实时版本相同的自定义目录中下载文件。我附上了我在应用程序中用于下载文件的代码。
代码:
DownloadManager downloadmanager = (DownloadManager) context.getSystemService(servicestring);
Uri uri = Uri.parse(url);
DownloadManager.Request request = new DownloadManager.Request(uri);
request.setAllowedOverRoaming(false);
request.setTitle(Title);
request.setDescription(Description);
request.setDestinationInExternalPublicDir("MyDir/videos/", filename);
request.setVisibleInDownloadsUi(true);
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE);
Long reference = downloadmanager.enqueue(request);
解决方案
推荐阅读
- cookies - Set-Cookie 标头在 Safari 中不起作用
- asp.net-core-mvc - 将 HTML 内容传递给 ASP.NET MVC 核心视图组件(内容投影)
- python - 在 Pandas 数据帧上使用 norm pdf 的函数中的 Dtype 错误
- javascript - TinyMCE 中的方向
- angular - 传递给模板 Angular8 期间未定义的接口
- javascript - 反应 | Gatsby:主页组件内部或外部的组件
- javascript - 日翻译
- c# - C#填充列数返回值1
- shell - 读取 shell 脚本中 curl 命令的响应
- c++ - 链接 DirectX