2016-06-22 4 views
2

android의 DownloadManager를 사용하려고하는데 API 18에서 완벽하게 작동하지만 API 17 휴대 전화에 대기열에 추가하는 즉시 동일한 코드가 STATUS_FAILED와 (ERUSOR_UNKNOWN) ERROR_UNKNOWN이 실패합니다. 여기 내 코드DownloadManager가 API 17에서 ERROR_UNKNOWN과 함께 실패합니다.

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

더 낮은 API 장치에서 API 버전 확인 인터넷 연결과 관련 있다고 생각되지 않습니다. 다운로드 관리자는 API 11 이상에서 정상적으로 작동합니다. – Amir

+0

@Amir 여러 휴대 전화에서 동일한 코드를 테스트했는데 두 API 17 휴대 전화가 ERROR_UNKNOWN에 실패했으며 모든 API 18+ 휴대 전화가 아무 문제없이 다운로드 완료되었습니다. 연결 상태를 확인한 결과 문제가없는 것으로 확신합니다. – Ramin

답변

2

이 문제로 어려움을 겪은 후 실수로 문제의 근본을 발견했습니다. 서버에서 가져온 다운로드 URL에는 "["및 "]"문자가 있습니다. 그들은 API 18+ DownloadManager에서 아무런 문제가 없었지만 API 17에서 다운로드는 ERROR_UNKNOWN으로 실패합니다. 이유는 무엇인지에 대한 정보가 없습니다. % 5B 및 % 5D로 대체하면 문제가 해결됩니다.

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