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/

10-12 00:33
查看更多