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

时间:2019-10-08 08:14:34

标签: android directory download realpath

使用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上,这是应该存储公共文档的文件夹。

1 个答案:

答案 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()。