Мне нужно добавить средство выбора изображений в свое приложение. Я создал небольшой класс для логики выбора изображений:
import {launchImageLibrary, launchCamera} from 'react-native-image-picker';
export default class ImagePickerService {
static openPickerLibrary(
setImageUrl: Dispatch<SetStateAction<string | null | undefined>>,
setModalVisible: Dispatch<SetStateAction<boolean>>,
) {
launchImageLibrary(
{mediaType: 'photo', includeBase64: true},
(response: any) => {
if (response.didCancel) {
console.info('User cancelled image picker');
} else if (response.error) {
console.info('ImagePicker Error: ', response.error);
} else {
setImageUrl(`data:image/jpeg;base64,${response.base64}`);
setModalVisible(false);
}
},
);
}
static openPickerCamera(
setImageUrl: Dispatch<SetStateAction<string | null | undefined>>,
setModalVisible: Dispatch<SetStateAction<boolean>>,
) {
launchCamera({mediaType: 'photo', includeBase64: true}, (response: any) => {
if (response.didCancel) {
console.info('User cancelled image picker');
} else if (response.error) {
console.info('ImagePicker Error: ', response.error);
} else {
setImageUrl(`data:image/jpeg;base64,${response.base64}`);
setModalVisible(false);
}
});
}
}
Затем я называю эти методы так:
<ModalButton
label = "Take photo"
onPress = {() =>
ImagePickerService.openPickerCamera(setImageUrl, setPickerVisible)
}
/>
<ModalButton
label = "Choose photo"
onPress = {() =>
ImagePickerService.openPickerLibrary(setImageUrl, setPickerVisible)
}
/>
Библиотека сборщика отлично работает. Но камера выбора не открывается. Закрывается только модальное окно и ничего больше. Также в консоли нет ошибок.
Я не понимаю, почему это происходит. У меня есть все разрешения в AndroidManifest. Также я пробовал эту строку, и это не помогло:
android:requestLegacyExternalStorage = "true"
Также я пробовал эти функции, и они тоже не помогли:
<uses-feature android:name = "android.hardware.camera" android:required = "false" />
<uses-feature android:name = "android.hardware.camera.front" android:required = "false" />
Как я могу исправить эту проблему?
Я решил свою проблему с react-native-camera, но мой вопрос остается открытым - я не понимаю, как исправить эту проблему. Если кто-нибудь может дать совет, я буду рад его услышать.