【发布时间】:2021-07-01 19:09:59
【问题描述】:
我有一个应用程序,我需要从 edittext 获取 url,然后下载管理器来下载文件,但是出现了问题,导致应用程序不断崩溃,我尝试授予权限,但即使在授予权限后,它仍然会崩溃,我会感谢大家的帮助,谢谢。
- 这是错误
java.lang.SecurityException: No permission to write to /storage/emulated/0/Download/
- 这是我的代码
binding.download.setOnClickListener {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
if(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED){
} else {
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE),READ_EXTERNAL_STORAGE)
}
} else {
downloadFile()
}
}
}
private fun downloadFile() {
val downloadUrl = binding.editUrl.text.toString()
val downloadRequest = DownloadManager.Request(Uri.parse(downloadUrl))
downloadRequest.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI)
downloadRequest.setTitle("Download")
downloadRequest.setDescription("Download Simple File..")
downloadRequest.allowScanningByMediaScanner()
downloadRequest.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION)
downloadRequest.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS , "" + System.currentTimeMillis())
val downloadManager = getSystemService(DOWNLOAD_SERVICE) as DownloadManager
downloadManager.enqueue(downloadRequest)
}
- 这是在授予权限之后
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if(requestCode == READ_EXTERNAL_STORAGE && grantResults[0] == PackageManager.PERMISSION_GRANTED){
downloadFile()
}
}
【问题讨论】:
-
你解决了这个问题吗?
标签: kotlin android-download-manager