安卓:使用DownloadManager下载的数据无法保存到内部存储器中。

4
我正在使用Android中的DownloadManager类从服务器下载数据。数据保存在外部存储器中。但我想将它们保存到内部存储器中。我进行了调查,发现了这个链接。我尝试了cyngus的第二个解决方案:
public static final String PROVIDER_NAME = "com.provider.Downloads";
public static final Uri CONTENT_URI = Uri.parse("content://"+ PROVIDER_NAME + "/downloads")

DownloadManager.Request req = new DownloadManager.Request(Uri.parse(LINK));
req.setDestinationUri(CONTENT_URI);

它没有起作用,它给了我一个错误:java.lang.IllegalArgumentException: Not a file URI: content://com.provider.Downloads/downloads。我做错了什么?

1个回答

6
DownloadManager.Request 的文档 明确提到,您为任何 setDestination* 方法设置的目标地址必须位于外部存储上,并且您的应用程序必须具有 WRITE_EXTERNAL_STORAGE 权限:

设置下载文件的本地目标位置。必须是指向外部存储路径的文件 URI,并且调用应用程序必须具有 WRITE_EXTERNAL_STORAGE 权限。

我不认为在此处提供内部存储路径是可能的。


嗯,但根据这个链接:https://dev59.com/Xmw15IYBdhLWcg3wntKh,DownloadManager如何写入内容提供程序? - b.i
我认为那也行不通。DownloadManager.Request 只适用于 _文件路径_,而不是 ContentProvider。如果你查看 DownloadManager 的源代码,你会发现在 setDestination* 中设置的路径最终被视为文件路径。 - curioustechizen
好的,谢谢!那么我需要将数据保存到外部存储器或使用另一个类而不是DownlaodManager。 - b.i

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接