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

Android API 31下React Native应用照片与PDF读取权限咨询

React Native Android SDK 31:照片与PDF读取权限配置

一、核心背景

Android 12(SDK 31)重构了存储权限体系,废弃了原有的全量READ_EXTERNAL_STORAGE权限,拆分出媒体文件专属权限;非媒体文件(如PDF)则不再支持通过权限批量访问,必须依赖用户主动选择。

二、照片读取权限配置

1. 清单文件声明

在android/app/src/main/AndroidManifest.xml中添加权限:

<!-- Android 12+ 专属照片权限 -->
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<!-- 兼容 SDK 32 及以下版本(若需向下兼容) -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />

2. 动态申请权限

React Native中用PermissionsAndroid实现动态申请:

import { PermissionsAndroid } from 'react-native';

const requestPhotoAccess = async () => {
  const granted = await PermissionsAndroid.request(
    PermissionsAndroid.PERMISSIONS.READ_MEDIA_IMAGES,
    {
      title: "请求照片读取权限",
      message: "我们需要访问你的照片来展示和读取内容",
      buttonPositive: "允许",
      buttonNegative: "取消",
      buttonNeutral: "稍后再说"
    }
  );

  if (granted === PermissionsAndroid.RESULTS.GRANTED) {
    // 权限已获取,可正常读取照片
  } else {
    // 权限被拒绝,需处理降级逻辑
  }
};

三、PDF文件读取方案

PDF属于非媒体文件,SDK 31及以上没有权限能让你直接批量访问所有PDF,合规的做法是使用系统文件选择器让用户主动选择文件:

使用第三方库实现文件选择

推荐用react-native-document-picker,代码示例:

import DocumentPicker from 'react-native-document-picker';

const pickPDFFile = async () => {
  try {
    const selectedFile = await DocumentPicker.pick({
      type: [DocumentPicker.types.pdf],
    });
    // 通过 selectedFile.uri 读取文件内容
    console.log('选中的PDF路径:', selectedFile.uri);
  } catch (err) {
    if (DocumentPicker.isCancel(err)) {
      console.log('用户取消了选择');
    } else {
      console.error('文件选择失败:', err);
    }
  }
};

如果你的应用需要批量访问PDF文件夹,只能升级到SDK 33(Android 13)及以上,使用READ_MEDIA_VISUAL_USER_SELECTED权限,但仍需用户主动选择目标文件夹。

四、关于当前无权限访问的问题

你现在无需权限就能访问所有内容,大概率是测试设备的定制ROM放宽了权限限制,或者应用使用了旧的权限兼容逻辑。但这种情况不符合Android官方权限规范,会导致应用在Google Play审核时被拒,务必按上述方式调整权限配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 03:55:58