如何解决VideoView不会从内部存储加载视频
VideoView不会从内部存储加载视频。我先将此视频的副本保存到内部存储中,然后再尝试使用setVideoURI()加载视频时,没有任何反应。
setVideoURI的代码
val videoUri = FileProvider.getUriForFile(mContext,"com.bruhascended.sms.fileProvider",File(path))
mContext.grantUriPermission("com.bruhascended.sms",videoUri,Intent.FLAG_GRANT_READ_URI_PERMISSION)
video.setVideoURI(videoUri)
将文件保存到内部存储器的代码。
fun saveMedia(date: Long): String {
val name = date.toString() + "." + MimeTypeMap.getSingleton().getExtensionFromMimeType(typeString)
val destination = File(mContext.filesDir,name)
val output: OutputStream = FileOutputStream(destination)
val input = mContext.contentResolver.openInputStream(uri)!!
val buffer = ByteArray(4 * 1024)
var read: Int
while (input.read(buffer).also { read = it } != -1) {
output.write(buffer,read)
}
output.flush()
return destination.toString()
}
清单中的文件提供程序
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.bruhascended.sms.fileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
最后是file_paths.xml
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<files-path name="media" path="."/>
</paths>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。