expo-камера: Ошибка: Модуль разрешений равен нулю

#react-native #expo #expo-camera

Вопрос:

У меня ошибка в консоли после установки expo-камеры.

  1. экспо установит экспо-камеру
  2. добавить разрешение в манифест Android
  3. добавить модуль 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"
    }
}
 

}

  1. запустите защиту
  2. нажмите на кнопку, чтобы показать камеру … ошибка в журнале

    Ошибка: Модуль разрешений равен нулю.

Разрешение:

 <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[]) для ссылки на нулевой объект