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

React Native Android平台WRITE_EXTERNAL_STORAGE权限始终被阻止问题排查

解决React Native在Android 13下存储权限请求失败的问题

问题原因

Android 13(API 33)对存储权限机制做了重大调整:WRITE_EXTERNAL_STORAGE权限已被完全废弃,系统不再识别该权限的申请请求,也不会向用户展示这个权限选项。这就是你遇到权限不弹窗、请求返回blocked的核心原因。

解决方案

1. 替换AndroidManifest.xml中的权限

根据你实际需要访问的媒体类型,替换成Android 13对应的新权限:

<!-- 示例:如果需要访问/写入图片 -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.WRITE_MEDIA_IMAGES" />

<!-- 如果需要访问视频/音频,添加对应权限 -->
<!-- <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" /> -->
<!-- <uses-permission android:name="android.permission.WRITE_MEDIA_VIDEO" /> -->

同时移除无效的requestLegacyExternalStorage配置(仅对Android 10/11生效,Android 13已强制分区存储):

<application
  android:name=".MainApplication"
  android:label="@string/app_name"
  android:icon="@mipmap/ic_launcher"
  android:roundIcon="@mipmap/ic_launcher"
  android:allowBackup="true"
  android:theme="@style/AppTheme"
>
...
</application>

2. 调整JS端权限请求逻辑

在react-native-permissions中,使用对应新权限的常量替代WRITE_EXTERNAL_STORAGE:

// 修改权限类型为对应媒体权限,比如图片权限
async checkPermission() {
  const permission = Platform.select({
    android: PERMISSIONS.ANDROID.READ_MEDIA_IMAGES,
  });
  const response = await request(permission);
  if (response !== 'authorized') {
    this.requestPermissions();
  }
}

async requestPermissions() {
  const permission = Platform.select({
    android: PERMISSIONS.ANDROID.READ_MEDIA_IMAGES,
  });
  const response = await request(permission);
  if (['restricted', 'blocked', 'never_ask_again'].includes(response)) {
    // 处理权限被拒绝的逻辑
  }
}

3. 额外说明

  • 如果你的需求是读写应用私有目录(比如getFilesDir()、getCacheDir()下的文件),不需要申请任何存储权限,直接读写即可。
  • 若需要访问公共下载目录等非媒体文件,Android 13可以使用MANAGE_EXTERNAL_STORAGE权限,但这个权限需要在Google Play审核时说明用途,且仅适用于特殊场景(比如文件管理器类应用)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 14:30:30