使用Intent.ACTION_OPEN_DOCUMENT_TREE,我得到了这个uri:
content://com.android.providers.downloads.documents/tree/downloads
如何将其转换为/storage/emulated/0/Download
-真实路径?
我不想使用
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
因为已弃用。
编辑:我需要下载公共位置的真实路径,因为在android Q上,这是应该存储公共文档的文件夹。
答案 0 :(得分:0)
根据文档,将DCIM / ...用于RELATIVE_PATH,其中...是您的自定义子目录所在的目录。因此,您最终会遇到类似这样的情况:
val resolver = context.contentResolver
val contentValues = ContentValues().apply {
put(MediaStore.MediaColumns.DISPLAY_NAME, "CuteKitten001")
put(MediaStore.MediaColumns.MIME_TYPE, "image/jpeg")
put(MediaStore.MediaColumns.RELATIVE_PATH, "DCIM/PerracoLabs")
}
val uri = resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues)
resolver.openOutputStream(uri).use {
// TODO something with the stream
}
请注意,由于RELATIVE_PATH是API级别29的新增功能,因此您需要在较新的设备上使用此方法,并在较旧的设备上使用getExternalStoragePublicDirectory()。