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

React Native Android权限弹窗真机不显示 模拟器正常无法下载文件

问题解决方案
  • 首先确认你的真机Android系统版本:Android 13(API 33)及以上版本已经废弃了WRITE_EXTERNAL_STORAGE权限,申请该权限不会弹出任何授权弹窗,这是你模拟器(一般为低版本)正常、真机异常的核心原因。
  • 按你的实际业务场景调整权限配置和申请逻辑:
    1. 如果你的文件只需要保存在应用专属目录(路径为/Android/data/你的应用包名/下),不需要申请任何存储权限,直接执行文件写入逻辑即可,删除现有存储权限申请相关代码即可正常运行。
    2. 如果你需要把文件保存到公共存储目录(比如下载、相册目录),按Android版本适配权限:
    • Android 13及以上:根据文件类型申请对应权限,图片申请READ_MEDIA_IMAGES、视频申请READ_MEDIA_VIDEO、音频申请READ_MEDIA_AUDIO、其他类型文件不需要申请权限,直接用MediaStore或者存储访问框架写入即可。
    • Android 10-12:除了WRITE_EXTERNAL_STORAGE权限,还需要在AndroidManifest.xml的<application>标签中添加属性android:requestLegacyExternalStorage="true"开启 legacy 存储模式。
  • 调整后的权限申请代码示例:
const requestAndroidStoragePermission = async () => {
  if (Platform.OS !== 'android') return true
  try {
    let granted
    const sdkVersion = Platform.Version
    if (sdkVersion >= 33) {
      // 按需申请对应媒体权限,这里以图片为例
      granted = await PermissionsAndroid.request(
        PermissionsAndroid.PERMISSIONS.READ_MEDIA_IMAGES
      )
    } else {
      granted = await PermissionsAndroid.request(
        PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE,
        {
          title: "File access",
          message: "The app needs files access to download your performance.",
        }
      )
    }
    if (granted === PermissionsAndroid.RESULTS.GRANTED) {
      this.setState({ storagePermission: true, showExportModal: true })
    } else {
      console.log("Files permission denied")
    }
  } catch (err) {
    console.warn(err)
  }
}
  • 同步更新AndroidManifest.xml的权限配置:
<!-- Android 13以下适用 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
<!-- Android 13及以上媒体权限,按需添加 -->
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />

<!-- Android 10适配,在application标签下添加 -->
<application
  ...
  android:requestLegacyExternalStorage="true"
  ...
>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:36:03