現在做了一個下載,為了兼容性直接使用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