下载管理器代码可以在旧设备中运行,但不能在最新设备中运行

问题描述 投票:0回答:1

下面是我集成的用于下载视频(.mp4)功能的代码。此代码可在我的 Android 8 设备上运行。相同的代码在最新的 Android 版本中不起作用。可能是我遗漏了一些东西或者有任何弃用问题?

 val dm = getSystemService(DOWNLOAD_SERVICE) as DownloadManager
                val url =
                    "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4"
                val request = DownloadManager.Request(
                    Uri.parse(url)
                )
                fileName = url.substring(url.lastIndexOf('/') + 1)
                fileName =
                    fileName.substring(0, 1).uppercase(Locale.getDefault()) + fileName.substring(1)
                request.setDestinationInExternalFilesDir(
                    this,
                    Environment.DIRECTORY_DOWNLOADS,
                    fileName
                )
                enqueue = dm?.enqueue(request)!!

我尝试调试,查找是否存在有关 URL 的任何问题,但没有任何问题,也尝试了错误日志,但没有任何错误。

android android-download-manager android-sdk-2.3 download-manager android-version
1个回答
0
投票

这样做的原因是因为,我使用 http url 来下载视频,而不是使用 DownloadManager 使用 https(安全),并且我没有在清单中将

android:usesCleartextTraffic
提到为
true
。因此,出于安全原因,下载管理器无法正常工作,因为 http url 在互联网通话加密方面并不安全。 userCleartextTraffic 表示应用程序是否打算使用明文流量(未加密的网络流量)

因此,当我在清单中将

android:usesCleartextTraffic
提到为
true
时,它开始使用来自 Android 9.0(API 级别 28) 及更高版本的 http url,因为在此版本以下没有引入标签,并且它会被忽略因此不是必需的,它将在这个版本以下工作。

© www.soinside.com 2019 - 2024. All rights reserved.