为什么在使用 DownloadManager 时会发生 IllegalArgumentException?

Mar*_*yam 6 android android-download-manager

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

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);
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我在 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)
Run Code Online (Sandbox Code Playgroud)

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

UME*_*492 0

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

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

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);
}
Run Code Online (Sandbox Code Playgroud)