使用 DownloadManager 下载 HTTP/HTTPS 个 URI
download HTTP/HTTPS URIs with DownloadManager
我用谷歌搜索并找到了相关信息。但这于事无补。
Android版本:4.0+
这是我的代码:
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
而我的 url 是 https://static.test.com/downloads/xxx.apk
方案是 https,但我仍然收到错误:
02-10 11:18:23.710 E/AndroidRuntime( 7550): java.lang.RuntimeException: Unable to start service com.souyidai.investment.android.service.DownloadService@4344e5e0 with Intent { act=download_with_download_manager cmp=com.souyidai.investment.android/.service.DownloadService (has extras) }: java.lang.IllegalArgumentException: Can only download HTTP/HTTPS URIs: https://static.test.com/downloads/xxx.apk
02-10 11:18:23.710 E/AndroidRuntime( 7550): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2711)
02-10 11:18:23.710 E/AndroidRuntime( 7550): at android.app.ActivityThread.access00(ActivityThread.java:141)
02-10 11:18:23.710 E/AndroidRuntime( 7550): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1299)
02-10 11:18:23.710 E/AndroidRuntime( 7550): at android.os.Handler.dispatchMessage(Handler.java:102)
02-10 11:18:23.710 E/AndroidRuntime( 7550): at android.os.Looper.loop(Looper.java:136)
02-10 11:18:23.710 E/AndroidRuntime( 7550): at android.app.ActivityThread.main(ActivityThread.java:5047)
02-10 11:18:23.710 E/AndroidRuntime( 7550): at java.lang.reflect.Method.invokeNative(Native Method)
02-10 11:18:23.710 E/AndroidRuntime( 7550): at java.lang.reflect.Method.invoke(Method.java:515)
02-10 11:18:23.710 E/AndroidRuntime( 7550): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:806)
02-10 11:18:23.710 E/AndroidRuntime( 7550): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
02-10 11:18:23.710 E/AndroidRuntime( 7550): at dalvik.system.NativeStart.main(Native Method)
02-10 11:18:23.710 E/AndroidRuntime( 7550): Caused by: java.lang.IllegalArgumentException: Can only download HTTP/HTTPS URIs: https://static.test.com/downloads/xxx.apk
02-10 11:18:23.710 E/AndroidRuntime( 7550): at android.app.DownloadManager$Request.<init>(DownloadManager.java:642)
02-10 11:18:23.710 E/AndroidRuntime( 7550): at com.souyidai.investment.android.service.DownloadService.onStartCommand(DownloadService.java:114)
这是 DownloadManager.Request 代码:
public Request(Uri uri) {
if (uri == null) {
throw new NullPointerException();
}
String scheme = uri.getScheme();
if (scheme == null || (!scheme.equals("http") && !scheme.equals("https"))) {
throw new IllegalArgumentException("Can only download HTTP/HTTPS URIs: " + uri);
}
mUri = uri;
}
有什么想法吗?
我刚遇到同样的问题。出于某种原因,我的 url 在 "https" 之前有一种白色 space。在 url 字符串上使用 trim()
解决了问题。
以下是对我有用的方法:
addAndroidDownloads: {
mediaScannable: true, // these two lines resolve the crash on first download
mime: 'image/*', // define mime type also
我用谷歌搜索并找到了相关信息。但这于事无补。
Android版本:4.0+
这是我的代码:
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
而我的 url 是 https://static.test.com/downloads/xxx.apk
方案是 https,但我仍然收到错误:
02-10 11:18:23.710 E/AndroidRuntime( 7550): java.lang.RuntimeException: Unable to start service com.souyidai.investment.android.service.DownloadService@4344e5e0 with Intent { act=download_with_download_manager cmp=com.souyidai.investment.android/.service.DownloadService (has extras) }: java.lang.IllegalArgumentException: Can only download HTTP/HTTPS URIs: https://static.test.com/downloads/xxx.apk
02-10 11:18:23.710 E/AndroidRuntime( 7550): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2711)
02-10 11:18:23.710 E/AndroidRuntime( 7550): at android.app.ActivityThread.access00(ActivityThread.java:141)
02-10 11:18:23.710 E/AndroidRuntime( 7550): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1299)
02-10 11:18:23.710 E/AndroidRuntime( 7550): at android.os.Handler.dispatchMessage(Handler.java:102)
02-10 11:18:23.710 E/AndroidRuntime( 7550): at android.os.Looper.loop(Looper.java:136)
02-10 11:18:23.710 E/AndroidRuntime( 7550): at android.app.ActivityThread.main(ActivityThread.java:5047)
02-10 11:18:23.710 E/AndroidRuntime( 7550): at java.lang.reflect.Method.invokeNative(Native Method)
02-10 11:18:23.710 E/AndroidRuntime( 7550): at java.lang.reflect.Method.invoke(Method.java:515)
02-10 11:18:23.710 E/AndroidRuntime( 7550): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:806)
02-10 11:18:23.710 E/AndroidRuntime( 7550): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
02-10 11:18:23.710 E/AndroidRuntime( 7550): at dalvik.system.NativeStart.main(Native Method)
02-10 11:18:23.710 E/AndroidRuntime( 7550): Caused by: java.lang.IllegalArgumentException: Can only download HTTP/HTTPS URIs: https://static.test.com/downloads/xxx.apk
02-10 11:18:23.710 E/AndroidRuntime( 7550): at android.app.DownloadManager$Request.<init>(DownloadManager.java:642)
02-10 11:18:23.710 E/AndroidRuntime( 7550): at com.souyidai.investment.android.service.DownloadService.onStartCommand(DownloadService.java:114)
这是 DownloadManager.Request 代码:
public Request(Uri uri) {
if (uri == null) {
throw new NullPointerException();
}
String scheme = uri.getScheme();
if (scheme == null || (!scheme.equals("http") && !scheme.equals("https"))) {
throw new IllegalArgumentException("Can only download HTTP/HTTPS URIs: " + uri);
}
mUri = uri;
}
有什么想法吗?
我刚遇到同样的问题。出于某种原因,我的 url 在 "https" 之前有一种白色 space。在 url 字符串上使用 trim()
解决了问题。
以下是对我有用的方法:
addAndroidDownloads: {
mediaScannable: true, // these two lines resolve the crash on first download
mime: 'image/*', // define mime type also