java - Android 下载管理器不适用于所有手机
问题描述
我正在学习做Android应用程序。我想做一个简单的应用程序。但是我遇到了问题,我不明白为什么。下载管理器在某些 android 版本上不起作用。当我在 4.1.1 版本中按下下载按钮时,应用程序停止。下载管理器在哪些版本中工作?
我的代码
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
request.setDescription(dlFilename);
request.setTitle(dlFilename);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
}
request.setDestinationInExternalPublicDir(downloadFolder, dlFilename);
DownloadManager manager = (DownloadManager) getSystemService(MainActivity.this.DOWNLOAD_SERVICE);
manager.enqueue(request);
Toast.makeText(getApplicationContext(), MainActivity.this.getString(R.string.downloading), Toast.LENGTH_LONG).show();
清单文件
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
日志猫
12-05 20:42:49.275 1510-1510/com.app.app/AndroidRuntime: FATAL EXCEPTION: main
java.lang.IllegalStateException: Unable to create directory: /storage/emulated/0/media/ringtones
at android.app.DownloadManager$Request.setDestinationInExternalPublicDir(DownloadManager.java:503)
at com.app.MainActivity$1$4$2.onClick(MainActivity.java:409)
at android.view.View.performClick(View.java:4204)
at android.view.View$PerformClick.run(View.java:17355)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
我正在等待您的帮助...谢谢。
解决方案
DownloadManager 只处理以 http:// 或 https:// 开头的请求
推荐阅读
- php - 尝试访问 bool 类型值的数组偏移量
- java - Kafka Connect API 和 Avro 对象(SourceRecord 与 org.apache.avro.Schema)
- https - 如何在 Cloud Run for Anthos on Google Cloud 集群上启用 HTTPS?
- c++ - vector.back() 和 vector[vector.size() - 1] 之间的区别?
- node.js - Meteor / NodeJS 在迁移开始之前运行自己的代码(Meteor 启动)
- javascript - 在java中使长路径代码更短
- html - 多个跨度上的有效锚点
- visual-studio - “选择启动项”命令/下拉菜单未显示在 Visual Studio 的标准工具栏上
- sql - 带有子查询的 HAVING 子句——检查组是否至少有一个行匹配条件
- angular - 角度 8 路由不重定向到正确的页面