gpt4 book ai didi

android - 下载管理器不适用于 Android 10 (Q)

转载 作者:行者123 更新时间:2023-12-03 09:36:51 25 4
gpt4 key购买 nike

很长一段时间以来,我一直在努力解决这个问题......我正在更新一个使用 DownloadManger 执行简单任务的应用程序,例如将文件下载到外部存储公共(public)目录,即:

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)

从 Android api 19-28 开始一切正常。它在 API 29 (Q/10) 上进行测试时会出现问题。 Android 实现了范围存储,因此弃用了 getExternalStoragePublicDirectory...因此我需要找出一个兼容的解决方案来支持 API 19- 29 .我不能使用内部应用程序存储,因为 DownloadManager 会抛出 SecurityException。 Androids 文档指出我可以使用 DownloadManager.Request setDestinationUri它甚至提到我可以使用 Android Q Context.getExternalFilesDir(String) .但是,当我这样做时,路径仍然是模拟路径:
/storage/emulated/0/Android/data/com.my.package.name/files/Download/myFile.xml

我从下载管理器收到一个回调,说下载已完成(使用正确的 ID),但是我无法从保存它的区域获取下载。我检查文件是否存在并返回 false:
new File("/storage/emulated/0/Android/data/com.my.package.name/files/Download/myFile.xml").exists();

任何帮助表示赞赏

为上下文添加代码。所以设置下载管理器
    private void startDownload() {
IntentFilter filter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE);
registerReceiver(downloadReceiver, filter);

String remoteURL= getString(R.string.remote_url);

DownloadManager.Request request = new DownloadManager.Request(Uri.parse(remoteUrl));
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE);
request.setTitle(getString(R.string.download_title));
request.setDescription(getString(R.string.download_description));
request.setDestinationUri(Uri.fromFile(new File(getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), "myFile.xml")));

DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
mainDownloadID= manager.enqueue(request);
}

检查文件是否存在:
new File(getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), "myFile.xml").exists(); //this returns false in the onReceive (and download IDs match)

最佳答案

尝试将此添加到应用程序标记中的 list 文件中

android:requestLegacyExternalStorage="true"

关于android - 下载管理器不适用于 Android 10 (Q),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59177136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com