Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 媒体不允许主目录下载_Android_Pdf_Save_Media_Android 10.0 - Fatal编程技术网

Android 媒体不允许主目录下载

Android 媒体不允许主目录下载,android,pdf,save,media,android-10.0,Android,Pdf,Save,Media,Android 10.0,尝试在下载目录中保存PDF文件,但在Android Q之后,getExternalStoragePublicDirectory被完全弃用后,无法将文件保存在DCIM或Pictures文件夹之外的任何其他位置,因为在尝试将文件保存到该位置时引发了以下异常 IllegalArgumentException:不允许下载主目录 content://media/external/images/media; 允许的目录为[DCIM, [图片] 有以下代码 private fun saveFile(input

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

IllegalArgumentException:不允许下载主目录 content://media/external/images/media; 允许的目录为[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)
    }
}
private-fun-saveFile(输入:ByteArray){
val fileName=“myFile.pdf”
val outputStream=if(android.os.Build.VERSION.SDK\u INT
stream.write(输入)
}
}
显然,当更改目录\u DCIM的路径时,一切都按预期工作,但是由于需要,文件应该像以前一样保存到下载。
非常感谢您的帮助。

没有为文件保存设置正确的Uri,下载时应该设置正确的Uri

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

感谢您的指点。

使用类似MediaStore.Download.Media.EXTERNAL\u CONTENT\u URI的内容保存到下载目录。不要忘记contentValues.put(MediaStore.MediaColumns.RELATIVE\u PATH,Environment.directory\u DOWNLOADS)用于下载=)