1

安装 expo-camera 后控制台出现错误。

  1. 世博会安装世博相机
  2. 在android清单中添加权限
  3. 在 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

我做错了什么?感谢帮助

4

1 回答 1

0

如果您只执行了这些步骤,则必须做更多的事情才能使其在 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 Native 项目,您必须确保在继续之前已安装并配置 react-native-unimodules 包。

于 2021-08-06T10:54:26.307 回答