android - 如何从图库中选择视频或图像并根据 Android 10(API 级别 29)获取其路径,因为 Mediastore.Video.Media.DATA 已弃用
问题描述
我正在尝试从图库中挑选视频并希望获得它的真实路径。但是在代码中它显示了 API 级别 29 中已弃用的 Mediastore.Video.Media.DATA id。所以请帮我找出解决方案。
这是我的视频选择器代码:
val i = Intent(Intent.ACTION_PICK, MediaStore.Video.Media.EXTERNAL_CONTENT_URI)
startActivityForResult(i, videoCode)
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == videoCode && resultCode == RESULT_OK) {
videoPath = getPathFromUri(data!!.data)
}
}
private fun getPathFromUri(uri: Uri?): String? {
var path:String?=null
val projection = arrayOf(MediaStore.Video.Media.DATA)
val cursor = contentResolver.query(uri!!, projection, null, null, null)
if (cursor != null) {
val columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA)
cursor.moveToFirst()
path=cursor.getString(columnIndex)
}
cursor?.close()
return path
}
解决方案
推荐阅读
- ruby-on-rails - FactoryBot 获取工厂的可用特征
- unity3d - 在运行时更改 Sprite 材质未应用?
- python - 使用Python搜索在线数据库并下载图片
- google-chrome - 什么是 deepminer.min.js 突然出现在网络应用程序中?
- javascript - NodeJS google-cloud/vision:方法不执行任何操作
- firebase - firebase云函数如何调用清理函数
- python - 如何将 mrjob EMR 指向正确的 AWS 账户?我不断收到 ssh 密钥无效消息
- python - 从对话框中获取统计信息
- spring - 使用 Spring Security 的非线性角色层次结构
- android - Android 应用程序使用情况 (usagestats) 不显示覆盖绘制应用程序的条目,如 Facebook Messagener 聊天头