Android的奥利奥(API26)和android.app.DownloadManager

乡亲! 此代码不适用于Android奥利奥(但在旧版本上可以,我可以看到通知和DownloadManager.ACTION_DOWNLOAD_COMPLETE广播消息)。

科特林

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) } 

我发现API 26模拟器通过移动数据模拟网络请求,所以最简单的解决方法是添加NETWORK_MOBILE标志(至少用于调试DownloadManager ):

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