无法播放来自URI Android 12的视频文件



我正试图从存储中的文件在外部层中播放视频。

首先,我获取特定文件的uri,并将其存储在一个字符串变量中。

private var myURI: String? = null        
private var getURI = registerForActivityResult(
ActivityResultContracts
.GetContent()
) { uri ->
if (uri == null) {
Toast.makeText(
requireActivity(), "Please pick a video",
Toast.LENGTH_SHORT
).show()
} else {
Log.d(ContentValues.TAG, "URI is $uri")

//Store URI
myURI = uri.toString()
}
}

此外,我将URI存储到设备上的本地SQLite数据库中。

我在本地数据库中已经有了它的URI,所以我不想再次使用registerForActivityResult方法,也不想通过Intent选择视频。这就是uri在数据库中以字符串格式显示的方式。

"content://com.android.providers.media.documents/document/video%3A51407">

这是从数据库访问uri的代码

val uri = URI("content://com.android.providers.media.documents/document/video%3A51407")
val videoUri = uri.toString()

我试图找到一种方法来做到这一点,但找不到实现这一点的方法。

我将URI存储到设备上的本地SQLite数据库

这不会像写的那样工作。您需要从ActivityResultContracts.GetContent切换到ActivityResultContracts.OpenDocument。一旦获得Uri,您还需要在ContentResolver上调用takePersistableUriPermissions()。否则,一旦您的流程终止,您对该内容的权利就会失效。

最新更新