【问题标题】:why IllegalArgumentException happens in using DownloadManager?为什么在使用 DownloadManager 时会发生 IllegalArgumentException?
【发布时间】:2017-05-04 12:35:15
【问题描述】:

我在我的android项目中使用DownloadManager来下载文件。

DownloadManager.Request request = new DownloadManager.Request(Uri.parse(soundURL));
    request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_HIDDEN);
    deleteIfFileExist(filePath);
    request.setDestinationInExternalFilesDir(context, SubPath, SndName);
    return manager.enqueue(request);

它工作正常,但我在 Fabric 中看到一些用户报告了崩溃:

Fatal Exception: java.lang.IllegalArgumentException: Unknown URL content://downloads/my_downloads
   at android.content.ContentResolver.insert(ContentResolver.java:882)
   at android.app.DownloadManager.enqueue(DownloadManager.java:904)

我搜索了一下并找到了某个地方,因为他们的DownloadManger 已禁用。但我在 android 设备中看到 android 版本是 4 他们没有能力禁用它。谁能帮助我为什么会发生这个错误?

【问题讨论】:

  • soundURL 是什么?
  • @VladMatvienko:我的下载地址。它是我主机中的一个文件。我说这对大多数用户来说都很好,只是其中一些用户报告了崩溃
  • 好的,抱歉,问题不在于源,而在于目标 URL
  • @VladMatvienko:如果网址错误,我处理了,问题出在其他地方
  • 这么好的问题......这也是我的问题

标签: android android-download-manager


【解决方案1】:

无法直接激活/停用下载管理器,因为它是系统应用程序,我们无权访问它。

唯一的选择是将用户重定向到下载管理器应用程序的信息页面。

try {
     //Open the specific App Info page:
     Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
     intent.setData(Uri.parse("package:" + "com.android.providers.downloads"));
     startActivity(intent);

} catch ( ActivityNotFoundException e ) {
     e.printStackTrace();

     //Open the generic Apps page:
     Intent intent = new Intent(android.provider.Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS);
     startActivity(intent);
}

【讨论】:

    猜你喜欢
    • 2019-07-13
    • 1970-01-01
    • 2014-09-06
    • 2012-04-22
    • 1970-01-01
    • 2021-07-19
    • 2020-10-21
    • 1970-01-01
    • 2023-03-29
    相关资源
    最近更新 更多