reactjs react-native-image-picker中的launchCamera()安装在设备上时不会打开任何内容

2fjabf4q  于 2022-11-29  发布在  React
关注(0)|答案(2)|浏览(292)

令人惊叹的开发者。我正在构建一个应用程序,它将提供机会,要么当场拍照并上传,要么从图库中选择一张图片。我正在使用react-native-image-picker。到目前为止,我的生活很顺利,一切都在模拟器上顺利运行,然而,一旦我在我的Android设备上安装了APK文件,按下相机按钮没有做任何事情。没有错误,没有权限请求,什么都没有。在模拟器上,我没有在控制台中出现任何错误,它工作得很完美。
状态如下:

const [pickerResponse, setPickerResponse] = useState(null);

和具有onPress()函数的按钮:

<Button
            title='Take A Photo'
            color="darkgray"
            onPress={() => launchCamera({mediaType: 'photo', saveToPhotos: true}, setPickerResponse)}
          />
          <Button
            title='Open Gallery'
            color="darkgray"
            onPress={() => launchImageLibrary({mediaType: 'photo'}, setPickerResponse)}
          />

我只在使用launchCamera时遇到此问题,而在使用launchImageLibrary时没有遇到此问题。我添加了以下权限:

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-feature android:name="android.hardware.camera" />

但它们没有产生任何影响,反而使我的模拟器停止工作。
这是我的第一个React原生应用程序,所以在正确的方向一点点推动将是非常感谢。祝你有一个伟大的周末。

ktca8awb

ktca8awb1#

所以问题是,我之前尝试的只是授予相机权限,而不是存储权限。因为在我的例子中,saveToPhotos设置为true,所以需要额外的存储访问权限。希望这能在将来帮助像我这样的新手。

const requestCameraPermission = async () => {
try {
  const granted = await PermissionsAndroid.request(
    PermissionsAndroid.PERMISSIONS.CAMERA,
    {
      title: "App Camera Permission",
      message:"App needs access to your camera ",
      buttonNeutral: "Ask Me Later",
      buttonNegative: "Cancel",
      buttonPositive: "OK"
    }
  );
  const grantedGallery = await PermissionsAndroid.request(
    PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE,
    {
      title: "App Gallery Permission",
      message:"App needs access to your photos",
      buttonNeutral: "Ask Me Later",
      buttonNegative: "Cancel",
      buttonPositive: "OK"
    }
  );
  if (granted === PermissionsAndroid.RESULTS.GRANTED && grantedGallery === PermissionsAndroid.RESULTS.GRANTED) {
    console.log("Camera permission given");
    launchCamera({mediaType: 'photo', saveToPhotos: true}, setPickerResponse)
  } else {
    console.log("Camera permission denied");
  }
} catch (err) {
  console.warn(err);
}

};

q7solyqu

q7solyqu2#

请尝试更改以下代码行:
打开图像库({媒体类型:'照片'},设置选取器响应)
到这个
打开图像库({媒体类型:'photo'},资源=〉设置选取器响应(资源))
看起来您没有正确传递回调响应

相关问题