【问题标题】:how to get file path from intent data uri如何从意图数据uri获取文件路径
【发布时间】:2020-11-02 08:03:48
【问题描述】:

我正在使用 Intent 来选择视频,

fun openVideo(view: View) {
        val intent = Intent(Intent.ACTION_PICK, MediaStore.Video.Media.EXTERNAL_CONTENT_URI)
        intent.type = "video/*"
        startActivityForResult(
            Intent.createChooser(intent, "Select Video"),
            REQUEST_TAKE_GALLERY_VIDEO
        )
}

然后我得到 uri 和路径

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (requestCode == REQUEST_TAKE_GALLERY_VIDEO && data != null) {

            val videPath = data.data?.path 
            val selectedVideoUri: Uri? = data!!.data.toString()
        }
    }

输出

videPath:
/external_files/KannadaGeeta/05CHAPTER2.mp3

selectedVideoUri :
content://com.mi.android.globalFileexplorer.myprovider/external_files/KannadaGeeta/05CHAPTER2.mp3

但我需要如下路径来检查文件是否存在

/storage/emulated/0/KannadaGeeta/13CHAPTER12.mp3

看,通过处理字符串我可以实现我想要的。但我正在寻找获取视频路径的正确方法。

谁能帮帮我。

编辑:

我试过这个是假的

File(selectedVideoUri).exists()

【问题讨论】:

  • 您不必检查文件是否存在。如果文件不存在,则用户无法选择它。
  • 你应该在你的数据库中保存selectedVideoUri
  • 您意识到videPath 只是该内容方案的最后一部分吗?
  • 我不明白您所说的“我不想处理字符串”是什么意思。路径也是字符串不是吗?
  • 您不必格式化任何内容。而且您不应该尝试将 uri(一个不错的内容方案)转换为文件系统路径。作为专业人士,您应该直接使用获得的 uri。你想要一条路径的原因是什么?这个 uri 就是你所需要的。

标签: java android react-native flutter kotlin


【解决方案1】:

您可以简单地将/external_files 替换为外部目录。

 val intentPath = activity?.intent!!.data!!.path!!

 val absolutePath = Environment.getExternalStorageDirectory().toString() + intentPath.substringAfter("/external_files") 

 e.g

 println("Intent Path : ${intentPath}")
 // Intent Path : external_files/KannadaGeeta/05CHAPTER2.mp3

 println("Absolute Path : ${absolutePath}")
 // Absolute Path : /storage/emulated/0/KannadaGeeta/05CHAPTER2.mp3

【讨论】:

  • 我已经在我的问题中提到了“看,通过处理字符串我可以实现我想要的。但我正在寻找一种正确的方法来获取视频路径。”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-27
  • 2016-01-21
  • 1970-01-01
  • 1970-01-01
  • 2012-10-23
  • 2012-02-11
  • 1970-01-01
相关资源
最近更新 更多