错误: 调用函数 'ExponentImagePicker.launchCameraAsync' 被拒绝

11 浏览
0 Comments

错误: 调用函数 'ExponentImagePicker.launchCameraAsync' 被拒绝

我试图使用"expo-image-picker"模块的"launchCameraAsync"函数让用户拍照,起初一切顺利,但现在当试图让用户拍照时,expo会抛出一个警告并且不激活相机,警告信息如下:

可能未处理的Promise拒绝(id:0):

错误:调用函数'ExponentImagePicker.launchCameraAsync'被拒绝。

→ 由于:java.lang.RuntimeException:无法在未调用Looper.prepare()的线程Thread[DefaultDispatcher-worker-2,5,main]中创建处理程序。

造成这个错误的代码部分是:

const permission = await ImagePicker.requestCameraPermissionsAsync();
if (permission.granted === false)
  //错误处理
console.log(permission);
let result = await ImagePicker.launchCameraAsync({
  base64: false,
  mediaTypes: ImagePicker.MediaTypeOptions.Images,
  allowsEditing: true,
  aspect: [3, 2],
  quality: 1,
});
console.log(result);
if (!result.cancelled) {
  console.log(result.uri);
  setImages({ ...images, document: result.uri });
}

我认为这个错误可能是与其他expo模块不兼容造成的,但我不确定,因为我没有在我的应用中更新或更改模块,不管怎样,这里是我认为相关模块的版本。

"expo": "~46.0.16",
"expo-image-picker": "~13.3.1",
"expo-updates": "~0.14.6",

0