主目录 不允许下载媒体

2024-05-15

尝试将 PDF 文件保存在下载目录中,但之后getExternalStoragePublicDirectory在 Android Q 后完全弃用,无法将文件保存在 DCIM 或 Pictures 文件夹之外的任何其他位置,因为尝试在此处保存文件时会引发以下异常。

IllegalArgumentException:不允许主目录下载 内容://媒体/外部/图像/媒体;允许的目录是 [DCIM, 图片]

有以下代码。

private fun saveFile(input: ByteArray) {
    val fileName = "myFile.pdf"
    val outputStream = if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.Q) {
        val directory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
        val file = File(directory, fileName)
        FileOutputStream(file)
    } else {
        val resolver = context.contentResolver
        val contentValues = ContentValues().apply {
            put(MediaStore.MediaColumns.DISPLAY_NAME, fileName)
            put(MediaStore.MediaColumns.MIME_TYPE, "images/*")
            put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_DOWNLOADS)
        }
        resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues)?.let {
            resolver.openOutputStream(it)
        }
    }
    outputStream?.use { stream ->
        stream.write(input)
    }
}

显然,当将路径更改为 DIRECTORY_DCIM 时,一切都会按预期进行,但由于要求,文件应像以前一样保存到下载中。 将不胜感激任何帮助。


没有为文件保存设置正确的 Uri,对于下载,它应该是

resolver.insert(MediaStore.Downloads.EXTERNAL_CONTENT_URI, contentValues)

黑色应用程序 https://stackoverflow.com/users/12121419/blackapps谢谢指点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

主目录 不允许下载媒体 的相关文章

随机推荐