【问题标题】:Android: Cannnot save data downladed from server using DownloadManager to internal memoryAndroid:无法将使用下载管理器从服务器下载的数据保存到内部存储器
【发布时间】:2012-07-11 23:17:47
【问题描述】:

我正在使用 android 中的 DownloadManager 类从服务器下载数据。数据保存到外部存储器。但我想将它们保存到内部存储器中。我进行了研究,发现来自link。我尝试了 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。我做错了什么?

【问题讨论】:

    标签: android memory android-contentprovider internal download-manager


    【解决方案1】:

    doc for DownloadManager.Request 明确提到您为任何setDestination* 方法设置的目标必须在外部存储上,并且您的应用必须具有WRITE_EXTERNAL_STORAGE 权限:

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

    我不明白如何在此处提供内部存储路径。

    【讨论】:

    • mmmm 好的,但是根据这个链接:stackoverflow.com/questions/6494627/…DownloadManager 如何写入内容提供者?
    • 我认为这也行不通。 DownloadManager.Request 适用于文件路径,不适用于ContentProviders。如果您查看DownloadManager 的源代码,您会发现您在 setDestination* 中设置的路径最终被视为文件路径。
    • mm 好的,谢谢!所以我必须将数据保存到外部存储器或使用除 DownlaodManager 之外的另一个类。
    猜你喜欢
    • 2016-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多