You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 14中加载本应用录制的视频为何无需媒体访问权限?

问题说明

我的应用支持应用内录制视频并保存到设备,同时能加载设备上的视频列表,操作流程如下:

  • 打开应用
  • 在Android 14系统中,选择媒体访问权限对话框里的「选择照片和视频」选项
  • 在应用内录制视频并保存,之后加载已保存的视频列表
  • 此时应用无需权限就能列出并播放这些自己录制的文件

请问:为什么加载或播放本应用录制的视频时不需要权限?

以下是我用来加载视频文件的代码:

fun getVideoFiles(context: Context) : List<String> {
        val videoItemHashSet = HashSet<String>()
        val projection = arrayOf(MediaStore.Video.VideoColumns.DATA, MediaStore.Video.Media.DISPLAY_NAME)

        val collection: Uri = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
            MediaStore.Video.Media.getContentUri(MediaStore.VOLUME_EXTERNAL)
        } else {
            MediaStore.Video.Media.EXTERNAL_CONTENT_URI
        }
        val cursor: Cursor? = context.contentResolver.query(collection, projection, null, null, null)
        try {
            if (cursor != null) {
                if (cursor.count > 0) {
                    cursor.moveToFirst()
                    do {
                        videoItemHashSet.add(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA)))
                    } while (cursor.moveToNext())
                }
                cursor.close()
            }
        } catch (e: Exception) {
            e.printStackTrace()
        }
        return ArrayList(videoItemHashSet)
    }
原因解析

这是Android系统的自有文件豁免权限机制导致的,核心逻辑有两点:

  1. 文件归属权与沙盒规则
    当你的应用通过自身录制并把视频保存到公共媒体库(比如MediaStore)时,系统会自动标记这些文件的「归属应用」为你的APP。对于这类由应用自己创建的媒体文件,Android 10(API 29)及以上版本默认允许应用直接访问,不需要额外的READ_MEDIA_VIDEO或旧版的READ_EXTERNAL_STORAGE权限——哪怕你是通过MediaStore查询获取这些文件,系统也会自动放行。

  2. Android 14权限细化后的独立逻辑
    你选择的「选择照片和视频」权限,本质是让应用仅能访问用户手动选择的媒体文件,但这和应用自身创建的文件权限是完全分开的。系统对应用自有创建的媒体文件,会跳过权限校验,因为系统能明确识别这些文件是你的APP生成的,不存在越权访问的风险。

另外要注意:你的代码里使用的MediaStore.Video.VideoColumns.DATA字段,在Android Q及以上版本已经被废弃,建议改用ContentUris.withAppendedId()获取文件的Uri来访问,避免在高版本系统出现兼容性问题。

内容的提问来源于stack exchange,提问作者sbkim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 18:45:09