在Android上使用launchCameraAsync()后,Expo图像拾取器崩溃应用程序

nnvyjq4y  于 2022-12-16  发布在  Android
关注(0)|答案(1)|浏览(199)

我使用expo-image-picker来允许用户选择和拍摄照片。从库中选择一张图像可以正常工作,但是当使用相机时,在拍摄照片后应用程序崩溃了。下面是我的代码:

const take = async () => {
    let result = await ImagePicker.launchCameraAsync({
      mediaTypes: ImagePicker.MediaTypeOptions.Images,
      quality: 1,
      
    });

    console.log(result.uri);
    if (!result.cancelled) {
      setImageUri(result.uri);
    }
  };

我想我有所有需要的权限,问题似乎只发生在内存有限的旧android设备上。有什么想法吗?

sczxawaw

sczxawaw1#

没有好的和容易的解决办法。
现在的情况是,当你启动相机时,它会作为一个新的Activity启动,而你的应用程序mainActivity会留在后台。
从Android P(9)开始,操作系统可以杀死你的后台活动。甚至有一个网站的实现对开发者来说更糟糕:https://dontkillmyapp.com/
可能的解决办法:
1.准备崩溃。保存所有状态和导航堆栈在本地存储,launchCamera。应用程序将重新启动,你会恢复所有的屏幕/导航/数据/等,并使用ImagePicker.getPendingResultAsync获取照片。
1.将lib更改为expo-camerareact-native-vision-camera,因为他们在mainActivity上使用相机但需要无聊的重新实现,而且看起来不如制造商原生相机。

相关问题