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

Android应用从READ_MEDIA_VIDEO权限迁移的技术咨询

Android应用从READ_MEDIA_VIDEO权限迁移的技术咨询

嘿,我之前帮朋友处理过同款旧Android应用的权限适配问题,刚好能给你一些接地气的实用建议,完全贴合你这个2014年的老项目场景:

先明确核心矛盾

Google Play发通知找你,大概率是因为你的权限声明或申请逻辑没踩中Android 13+的合规点——毕竟你的app是自己录视频并存到Pictures子文件夹,权限选择其实有更精准的方案,不一定非得硬扛READ_MEDIA_VIDEO的合规问题。

分版本适配的实操步骤

我给你拆成不同Android版本的处理方式,都是能直接套进你老项目的:

  • Android 12及以下版本
    继续用你原来的READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE权限就行,但要在Manifest里加个版本限制,避免高版本系统乱申请:

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
    

    动态申请逻辑和你之前写的保持一致,不用大改,省得折腾老代码。

  • Android 13及以上版本
    这里有两个可选方案,你看自己代码复杂度挑:

    1. 优化READ_MEDIA_VIDEO权限的使用(改动最小)

      • 先在Manifest里把权限声明写对:
        <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
        
      • 重点改申请时机:别一启动app就弹权限框,一定要和用户操作绑定——比如用户点击「查看我的录制视频」按钮时再申请。Google Play对权限的「必要性」卡得很严,你得让审核员看到这个权限是用户主动触发的,不是乱要的。
      • 额外小技巧:因为视频是你自己app录的,存到Pictures子文件夹时,记得在MediaStore里标记好归属,读取时过滤自己app的视频,就算用户拒绝权限,也能读到自己录的内容(这个需要你在存视频时把app包名关联到媒体条目里)。
    2. 改用MediaStore API操作(推荐,合规性拉满)
      既然视频是自己录的,不如直接用MediaStore API来存,这样Android 13+下读取自己的视频根本不需要申请READ_MEDIA_VIDEO权限——系统默认允许app访问自己插入到MediaStore的媒体文件,完美绕开权限合规问题。
      给你个简单的存视频示例代码,直接替换你原来的文件写入逻辑就行:

      val videoValues = ContentValues().apply {
          put(MediaStore.Video.Media.DISPLAY_NAME, "my_record_${System.currentTimeMillis()}.mp4")
          put(MediaStore.Video.Media.MIME_TYPE, "video/mp4")
          put(MediaStore.Video.Media.RELATIVE_PATH, Environment.DIRECTORY_PICTURES + "/你的专属子文件夹名")
      }
      val contentUri = contentResolver.insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, videoValues)
      // 接下来把录制好的视频数据写入contentUri对应的输出流
      

      读取的时候,直接通过MediaStore查询你那个专属子文件夹下的视频,不用申请任何额外权限,Google Play审核绝对过。

最后必做的合规检查

  • 一定要在app的隐私政策里写清楚权限用途:比如「本app申请的视频读取权限,仅用于展示您通过本app录制并保存的视频,不会访问其他来源的视频内容」,别漏了这个,不然审核容易卡。
  • 测试时一定要覆盖权限被拒绝的场景:比如用户点了拒绝,app不能崩溃,要友好提示用户去系统设置开权限,或者给个替代方案(比如提示「您拒绝了权限,暂时无法查看录制的视频,请在设置中开启权限」)。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 13:53:08