#react-native #expo #expo-camera
Вопрос:
У меня ошибка в консоли после установки expo-камеры.
- экспо установит экспо-камеру
- добавить разрешение в манифест Android
- добавить модуль expo камеры в maven
все проекты { репозитории {
// * Your other repositories here *
// * Add a new maven block after other repositories / blocks *
maven {
// expo-camera bundles a custom com.google.android:cameraview
url "$rootDir/../node_modules/expo-camera/android/maven"
}
}
}
- запустите защиту
- нажмите на кнопку, чтобы показать камеру … ошибка в журнале
Ошибка: Модуль разрешений равен нулю.
Разрешение:
<uses-permission android:name="android.permission.CAMERA" />
обновление 1 :
Я тестирую с помощью этого примера кода, чтобы проверить свое разрешение
https://reactnative.dev/docs/permissionsandroid
мой пример функции
// state local
const [hasPermission, setHasPermission] = useState(null);
// function
const requestCameraPermission = async () => {
console.log('requestCameraPermission')
try {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.CAMERA,
{
title: "Cool Photo App Camera Permission",
message:
"Cool Photo App needs access to your camera "
"so you can take awesome pictures.",
buttonNeutral: "Ask Me Later",
buttonNegative: "Cancel",
buttonPositive: "OK"
}
);
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
setHasPermission(true)
console.log("You can use the camera");
} else {
console.log("Camera permission denied");
setHasPermission(false)
}
} catch (err) {
console.warn(err);
}
};
// result of requestCameraPermission : You can use the camera
// Error : Attempt to invoke interface method 'boolan expo.modules.interfaces.permission.Permission.hasGrantedPermissions(java.lang.string[]) on a null object reference
Я сделал что-то не так ?
спасибо за помощь
Ответ №1:
Если вы выполнили только эти шаги, вам нужно сделать больше, чтобы он работал на устройстве Android.
На странице Github говорится::
Настройте android/build.gradle, чтобы добавить новый блок maven после всех других репозиториев, как описано ниже:
allprojects {
repositories {
// * Your other repositories here *
// * Add a new maven block after other repositories / blocks *
maven {
// expo-camera bundles a custom com.google.android:cameraview
url "$rootDir/../node_modules/expo-camera/android/maven"
}
}
}
Но прежде чем сделать это, вы должны:
Для простых собственных проектов React необходимо убедиться, что вы установили и настроили пакет react-native-unimodules, прежде чем продолжить.
Комментарии:
1. Я установил «react-native-унимодули»: «^0.13.3», и для выставки в maven я добавил последнюю , но ту же ошибку, что и в моем проекте expo-сканер штрих-кодов, и это не проблема. Но expo-камера использует то же разрешение , так что я не скрываю.
2. @roplopfan Я попробовал локально, и это сработало… извините, что не могу быть более полезным =(
3. может быть, мне нужно почистить свой проект ? я обновил свой пост
4. @roplopfan, Ты мог бы попробовать
npm cache clean --force
5. та же проблема… Я использую в своем телефоне Android api 24. firebase. Может быть, в этом и проблема. У меня есть эта ошибка, если бы я запустил свой телефон в компоненте камера -> Попытка вызвать метод интерфейса ‘boolan expo.modules.interfaces.разрешение. Разрешение.hasGrantedPermissions(java.lang.string[]) для ссылки на нулевой объект