Kotlin的新手,我正尝试简单地从图库中获取任何视频,然后打开设备的默认应用程序播放器。
我获取所有视频的功能。它看起来运行良好,但是返回的Uri就像“content:// ...”,我不知道这是否正确,还是应该像“file:// ...”这样
private val videos = mutableListOf<Uri>()
private fun getAllVideos() {
val uriExternal = MediaStore.Video.Media.EXTERNAL_CONTENT_URI
val projection = arrayOf(MediaStore.Video.Media._ID)
contentResolver.query(uriExternal, projection, null, null, null)?.use { cursor ->
while (cursor.moveToNext()) {
val videoUri = Uri.withAppendedPath(uriExternal, "" + cursor.getString(0))
videos.add(videoUri)
}
}
}
然后我尝试像这样打开Uri,但我总是从播放器中得到一个错误,并且没有任何效果。
val intent = Intent(Intent.ACTION_VIEW).apply {
data = videos.first()
type = "video/*"
}
startActivity(intent)
我搜索了但没有找到任何不使用“MediaStore.Video.Media.DATA”的更新教程(现已弃用)。我做错了什么?
最佳答案
是的。
首先,删除type
或使用正确的MIME类型。不要使用通配符。
其次,将FLAG_GRANT_READ_URI_PERMISSION
添加到Intent
。没有它,其他应用程序将无权访问内容。
另外,请确保仅在列表中至少有一个元素的情况下浏览该代码,否则,您的first()
调用将引发异常。
关于android - Kotlin如何获取和打开视频,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60209276/