Android Scoped Stoage-在onActivityResult中获取视频详细信息

时间:2020-04-20 07:29:16

标签: android android-file storage-access-framework scoped-storage storage-access-api

用例-目前,我正在开发视频上传模块。要获取视频,我已经激发了SAF视频选择器的意图,但是即使我已经看过Google IO 19准备范围存储视频,也无法通过任何方法或代码从uri中的uri获取视频详细信息,但也没有提供任何示例代码要做到这一点。 (视频详细信息表示持续时间大小,名称解析度和名称)

要获取视频详细信息,我们必须使用MediaStore api(推荐一个),如果我传递文件uri,则MediaStore仅适用于内容URI,那么光标将始终为null 并且仅当光标不为null时才获得内容uri

向某人求助会帮助我

我正在使用此代码打开视频选择器

    private fun openVideoChooser() {
    val intent = Intent(Intent.ACTION_OPEN_DOCUMENT)
    intent.type = "video/*"
    intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, false)
    startActivityForResult(Intent.createChooser(intent, "Select Picture"), 100)
}

onActivityResult中的

通过传递从intent中获得的uri调用了此功能-

    private fun getVideoDetails(it: Uri) {
    var fileName: String? = null
    var duration: Long = 0
    val projection = arrayOf(MediaStore.Video.VideoColumns.DATA, MediaStore.Video.VideoColumns.DURATION)
    val cursor = contentResolver.query(it, projection, null, null, null)
    if (cursor != null) {
        if (cursor.moveToFirst()) {
            fileName = cursor.getString(cursor.getColumnIndexOrThrow(projection[0]))
            duration = cursor.getLong(cursor.getColumnIndex(projection[1]))
        }
        cursor.close()
    } else
        LogUtil.info("videoInfo ", "Cursor Null :")
    if (fileName == null) fileName = "NA"
    LogUtil.info("videoInfo ", "Path : $fileName")
    LogUtil.info("videoInfo ", "Duration : $duration")
}

已经通过Internet搜索解决方案,但没有任何解决方案,因此请在此处发布。我的测试设备是Honor 8x(Android 10版本)

0 个答案:

没有答案