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

安卓Expo Go环境下React Native应用无法调用相机问题求助

问题解决:Expo开发模式下相机无法打开,打包APK后正常的问题

核心代码问题:权限判断逻辑错误

你的verifyPermission函数存在逻辑漏洞:当权限处于DENIED状态时,返回的是完整的permissionResponse对象(如{granted: false}),而非布尔值permissionResponse.granted。这会导致imagePickerHandler里的if (!hasPermission)判断失效——对象属于真值,即便权限未被授予,代码仍会执行launchCameraAsync,最终触发相机权限警告。

修复后的verifyPermission函数:

const verifyPermission = async () => {
  console.log('PermissionStatus.DENIED', PermissionStatus.DENIED);
  if (cameraPermissionInformation.status === PermissionStatus.UNDETERMINED) {
    const responseStatus = await requestPermission();
    return responseStatus.granted;
  }
  if (cameraPermissionInformation.status === PermissionStatus.DENIED) {
    const permissionResponse = await requestPermission();
    console.log('permissionResponse.granted-----', permissionResponse.granted);
    // 返回布尔值而非对象,确保权限判断逻辑正确
    return permissionResponse.granted;
  }
  return true;
};

开发模式额外配置检查

开发模式下需确保app.json(或app.config.js)中显式声明相机相关权限,Expo开发服务器会依赖该配置发起权限请求:

{
  "expo": {
    "android": {
      "permissions": [
        "CAMERA",
        "READ_EXTERNAL_STORAGE",
        "WRITE_EXTERNAL_STORAGE"
      ]
    }
  }
}

开发模式权限重置

若之前手动拒绝过应用相机权限,需进入安卓系统设置重置应用权限,再重启开发服务器,确保权限请求流程正常触发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 08:20:53