繁体   English   中英

如何从意图数据uri获取文件路径

[英]how to get file path from intent data uri

我正在使用意图 select 的视频,

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和path

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()
        }
    }

output

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()

您可以简单地将/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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM