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

React Native ImagePicker无法打开相机问题求助

解决react-native-image-picker拍照权限请求异常问题

看起来你遇到的是React Native 0.60+版本下,react-native-image-picker组件相机权限请求异常的问题——点击拍照只触发存储权限请求,再次操作提示权限未授予,但图库选择功能正常。下面是针对性的解决方案:

1. 修正AndroidManifest.xml的权限配置

你当前的权限声明有几个需要调整的点:

  • 相机权限需要配合相机特性声明(避免无相机设备报错)
  • 适配Android 13+的存储权限变更(WRITE_EXTERNAL_STORAGE已被废弃)

更新你的权限声明如下:

<!-- 相机权限及特性声明 -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />

<!-- 存储权限:适配Android 13及以下版本 -->
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" android:maxSdkVersion="33" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />

2. 在代码中主动处理相机权限请求

RN 0.60+采用动态权限管理,react-native-image-picker需要你主动请求相机权限,而不是依赖系统自动弹窗。修改你的ImageChange方法,加入权限检查和请求逻辑:

import ImagePicker, { requestCameraPermissions } from 'react-native-image-picker';

const ImageChange = async () => {
  // 先请求相机权限
  const cameraPermissionResult = await requestCameraPermissions();
  
  if (cameraPermissionResult.granted) {
    // 权限已授予,打开图片选择器
    const options = { 
      title: 'Select Image', 
    };
    
    ImagePicker.showImagePicker(options, response => {
      console.log('Response=', response);
      if (response.didCancel) {
        console.log('user cancelled');
      } else if (response.error) {
        console.log('picker error' + response.error);
      } else {
        let source = response;
        console.log(response.uri);
      }
    });
  } else {
    console.log('相机权限未授予,请开启权限后重试');
    // 可选:这里可以添加引导用户跳转到应用设置页面的逻辑
  }
};

3. 额外检查项

  • 确保你使用的react-native-image-picker是最新版本(执行npm install react-native-image-picker@latest更新),旧版本可能存在权限逻辑bug
  • 确认RN自动链接已生效:RN 0.60+会自动链接原生模块,如果你之前手动链接过,建议先取消手动链接再重新构建项目

这样调整后,点击拍照时会先请求相机权限,权限授予后可正常打开相机,不会再出现只请求存储权限的异常问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 08:38:10