2

여러분! 이 코드는 Android Oreo에서 작동하지 않지만 이전 버전에서는 괜찮습니다. 알림과 DownloadManager.ACTION_DOWNLOAD_COMPLETE 브로드 캐스트 메시지가 표시됩니다.Android Oreo (API26) android.app.DownloadManager

은 코 틀린

testButton.setOnClickListener { 
     val downloadManager = getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager 
     val uri = Uri.parse("[url for a mp3 file]") 
     val request = DownloadManager.Request(uri) 
     request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI) 
     request.setAllowedOverRoaming(false) 
     request.setTitle("Test mp3") 
     request.setDescription("Wow!") 
     request.setVisibleInDownloadsUi(true) 
     request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE) 
     request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "/GadgetSaint/" + "/" + "Sample" + ".mp3") 

     val reference = downloadManager.enqueue(request) 
    } 
+0

안녕하세요, 왜 그런 일이 일어 났는지 알아 냈습니까? – Ahmad

+1

시뮬레이터 관련 문제인 것처럼 보입니다. 해결 방법을 찾았습니다. request.setAllowedNetworkTypes (DownloadManager.Request.NETWORK_WIFI 또는 DownloadManager.Request.NETWORK_MOBILE) –

+1

대단합니다! 당신은 대답으로 게시해야합니다 - 나는 모든 api diffs를보고 미친 듯이 가고 있습니다. 변경 사항을 기록하는 것을 그냥 잊었는지 확인하십시오 – Ahmad

답변

2

나는 API (26) 에뮬레이터가 모바일 데이터를 통해 네트워크 요청을 시뮬레이션, 그래서 가장 간단한 해결 방법은 (적어도 DownloadManager 디버깅 용) NETWORK_MOBILE 플래그를 추가 발견 :

request.setAllowedNetworkTypes(DownloadManager.Request.NETWO‌​RK_WIFI | DownloadManager.Request.NETWORK_MOBILE) 
+0

왜 그런지 알게되었습니다! 내 에뮬레이터가 wifi 대신 모바일 데이터로 실행되도록 설정되었습니다. https://i.imgur.com/OvdDvX8.png – Ahmad