Android DownloadManager ERROR_UNKNOWN 在API 17 巨坑完美解决

现在做了一个下载,为了兼容性直接使用Android Sdk 自带的 DownloadManager 开发,在其他手机上都是OK,只有在有一台vivo上不行。

我尝试使用vivo系统浏览器去下载这个链接,也是OK的,这个排除了网络问题和系统下载的bug的问题。

尝试去找错误给我返回一个ERROR_UNKNOWN,完全SB了,此路不通。

尝试换一个链接去下载,居然也是OK的,所以确定了是链接的问题,链接有什么问题?我对比了一下,除了下载失败链接里包含了中括号[],其他也没有什么不一样的,所以我尝试着使用%5B%5D 替换 [],居然好了。这也太奇葩了吧。。。

url = url.replace("[","%5B").replace("]","%5D");

之后我去Google了一下,搞明白了,原来Android系统在18之前有这么一个问题,之后修复了。

最终解决:

if(Build.VERSION.SDK_INT<=Build.VERSION_CODES.JELLY_BEAN_MR2){
            uri = uri.replace("[","%5B").replace("]","%5D");
        }

参考:

http://stackoverflow.com/questions/37976748/downloadmanager-fails-with-error-unknown-on-api-17