【问题标题】:Android Oreo (API26) and android.app.DownloadManagerAndroid Oreo (API26) 和 android.app.DownloadManager
【发布时间】:2018-06-07 12:31:34
【问题描述】:

伙计们! 此代码在 Android Oreo 上不起作用(但在旧版本上没问题,我可以看到通知和 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)
}

【问题讨论】:

  • 嗨,你知道为什么会这样吗?
  • 好像是模拟器相关的问题,我找到了解决方法:request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI or DownloadManager.Request.NETWORK_MOBILE)
  • 太棒了!您应该将其发布为答案-我在这里发疯了,查看所有 api 差异,看看他们是否只是忘记记录更改

标签: android kotlin android-download-manager download-manager android-8.0-oreo


【解决方案1】:

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

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

【讨论】:

  • 哦,我知道为什么了!我的模拟器设置为在移动数据而不是 wifi 上运行:i.imgur.com/OvdDvX8.png
猜你喜欢
  • 2018-05-24
  • 1970-01-01
  • 2019-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多