我们的应用程序允许用户从中拍摄照片(和选择照片)。
我已经使用了 Expo 组件 ImagePicker ,因为它提供了一个简单的API。
它在展会期间完美运作(exp start
和exp publish
),但它在独立的apk中不起作用。
当我尝试调用ImagePicker.launchCameraAsync()
时,我捕获了一个 EUNSPECIFIED 异常,但在独立的apk中只有 。
详情
代码的摘录:
import { ImagePicker } from 'expo';
(...)
const image = await ImagePicker.launchCameraAsync({
allowsEditing: true,
aspect: [3, 5],
});
(...)
let image = await ImagePicker.launchImageLibraryAsync({
allowsEditing: true,
aspect: [3, 5],
});
它在世博会期间运作良好,包括exp publish
版本。
至于app.json
中的权限,我的内容如下:
(...)
"android": {
"package": "br.com.miredefamilia",
"versionCode": 3,
"permissions": [
"android.permissions.CAMERA",
"android.permissions.READ_INTERNAL_STORAGE",
"android.permissions.READ_EXTERNAL_STORAGE"
]
}
我也试过没有android.permissions
。
移动设备请求获得许可,我接受,并且它不会像expo
中那样启动相机/选择器。
任何帮助?
答案 0 :(得分:1)
以下更改解决了问题:
在app.json
"android": {
"package": "br.com.miredefamilia",
"versionCode": 3,
"permissions": [
"CAMERA",
"READ_INTERNAL_STORAGE",
"WRITE_INTERNAL_STORAGE",
"READ_EXTERNAL_STORAGE",
"WRITE_EXTERNAL_STORAGE"
]
}
对组件的调用,我删除了参数:
const image = await ImagePicker.launchCameraAsync();
let image = await ImagePicker.launchImageLibraryAsync();
我还删除了依赖项:
"react-native-camera": "^0.10.0",
我不确切知道哪一个解决了这个问题,但其中一个解决了问题。
答案 1 :(得分:0)
这是使用docs链接的正确解决方案
询问Permission.CAMERA
和Permission.CAMERA_ROLL
const { status } = await Permissions.askAsync(Permissions.CAMERA, Permissions.CAMERA_ROLL)
if (status === 'granted') {
ImagePicker.launchCameraAsync({
mediaTypes: 'Images',
allowsEditing: true,
aspect: [1, 1]
})
} else {
// ask user to turn on permission here
}
还使用此权限更新app.json
CAMERA
READ_EXTERNAL_STORAGE
READ_INTERNAL_STORAGE