【发布时间】:2021-07-15 07:46:58
【问题描述】:
我在 kotlin - android 中使用下载管理器。 成功下载文件如下:
fun downloadFirmwareFile(baseActivity: Context, url: String?, title: String?): Long {
val direct = File(Environment.getExternalStorageDirectory().toString() + "/firmware")
if (!direct.exists()) {
direct.mkdirs()
}
val extension = url?.substring(url.lastIndexOf("."))
val downloadReference: Long
var dm: DownloadManager = baseActivity.getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager
val uri = Uri.parse(url)
val request = DownloadManager.Request(uri)
var subPath = "bin" + System.currentTimeMillis() + extension
request.setDestinationInExternalPublicDir(
Environment.DIRECTORY_DOCUMENTS,
subPath)
Log.e("File path >> ", Environment.DIRECTORY_DOCUMENTS + subPath)
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)
request.setTitle(title)
Toast.makeText(baseActivity, "start Downloading..", Toast.LENGTH_SHORT).show()
downloadReference = dm?.enqueue(request) ?: 0
downloadFirmwareLiveData.postValue("")
var file = File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS), subPath)
if (file.exists()) {
Log.e("path >>>>>>>>>", "path >>>>>>>>>" + file.absolutePath)
}else{
Log.e("path >>>>>>>>>", "path >>>>>>>>> File not exists")
}
return downloadReference
}
在这里,您可以看到我正在尝试获取下载的文件路径,如下所示:
var file = File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS), subPath)
if (file.exists()) {
Log.e("path >>>>>>>>>", "path >>>>>>>>>" + file.absolutePath)
}else{
Log.e("path >>>>>>>>>", "path >>>>>>>>> File not exists")
}
但它给了我:路径 >>>>>>>>> 文件不存在
可能是什么问题?请指导。
【问题讨论】:
-
文件尚未下载。您使用该代码还为时过早。
-
我想是的,我该如何解决这个问题?
-
为 ACTION_DOWNLOAD_COMPLETE 注册一个广播接收器。 (或者无论如何它被称为)。然后,您将从下载管理器中获得下载文件的 uri。所有非常标准的东西。你会发现到处都是代码。
标签: android kotlin android-download-manager