java.lang.SecurityException:没有写入/storage/emulated/0/Download



我有一个应用程序,我需要从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()
}
}

正如标题所说。您想要写入,但只请求读取权限。

您需要请求Manifest.permission.WRITE_EXTERNAL_STORAGE

相关内容

最新更新