【发布时间】: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