Android Q - 如何获取下载文件夹的真实路径

use*_*364 5 directory android download realpath

使用 Intent.ACTION_OPEN_DOCUMENT_TREE 我得到这个 uri :

content://com.android.providers.downloads.documents/tree/downloads
Run Code Online (Sandbox Code Playgroud)

如何将其转换为/storage/emulated/0/Download- 真实路径?我不想使用

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)

因为已弃用。

编辑:我需要用于下载的公共位置的真实路径,因为在 android Q 上,这是应该存储公共文档的文件夹。

小智 -1

根据文档,使用 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
  }
Run Code Online (Sandbox Code Playgroud)

请注意,由于 RELATIVE_PATH 是 API 级别 29 中的新增内容,因此您需要在较新的设备上使用此方法,并在较旧的设备上使用 getExternalStoragePublicDirectory() 。