使用DownloadManager下载HTTP / HTTPS URI

时间:2015-02-10 03:41:46

标签: android https

我用Google搜索并找到了一些相关信息。但这并没有帮助。

Android版:4.0+
这是我的代码:

DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));

我的网址是https://static.test.com/downloads/xxx.apk

Scheme是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.access$2100(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;
    }

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

我遇到了同样的问题。出于某种原因,我的网址在&#34; https&#34;之前有一种空格。在url字符串上使用trim()解决了问题。

答案 1 :(得分:0)

这对我有用:

addAndroidDownloads: {
          mediaScannable: true, // these two lines resolve the crash on first download
          mime: 'image/*', // define mime type also