我尝试使用Android自己的DownloadManager,它在API 18+上完美运行,但是相同的代码失败(STATUS_FAILED),因为ERROR_UNKNOWN几乎在我将它排入API 17手机时就失败了。这是我的代码
Context context = MyApplication.getSharedContext();
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE).setTitle(notiTitle).
setVisibleInDownloadsUi(false);
File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+File.separator+fileName);
request.setDestinationUri(Uri.fromFile(file));
DownloadManager manager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
manager.enqueue(request) ;
答案 0 :(得分:2)
经过几天的努力解决这个问题后,我意外地发现了问题的根源。从服务器获取的下载网址有" ["和"]"字符。它们在API 18+ DownloadManager中没有问题,但在API 17中,下载失败,ERROR_UNKNOWN没有任何关于为什么的信息。 用%5B和%5D替换它们分别解决了这个问题。
url = url.replace("[","%5B").replace("]","%5D");