现在做了一个下载,为了兼容性直接使用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