我使用react原生权限来获得相机权限,它在iOS中运行良好。但当用户同意或拒绝时,我无法获得android权限的回调。我试着用PermissionsAndroid替换它,但我遇到了同样的问题。
最后,我创建了一个React Native的新项目,并使用相同的代码获得了android权限的回调。出现这种情况的原因是什么?
注意:两个项目都使用相同版本的React Native。
- 请确保您的
android/app/src/main/AndroidManifest.xml
文件中有这个。如果没有,请添加它并重新生成您的应用程序
<uses-permission android:name="android.permission.CAMERA" />
- 您可以检查权限请求的状态,查看它是否被阻止或授予
import RNPermissions, { PERMISSIONS } from 'react-native-permissions';
const requestCameraPermission = async () => {
const p = PERMISSIONS.ANDROID.CAMERA;
const checkStatus = await RNPermissions.check(p);
console.log('checkStatus', checkStatus);
const requestStatus = await RNPermissions.request(p);
console.log('requestStatus', requestStatus);
};
- 您可能第一次拒绝了权限,在这种情况下,对其他
request()
的响应将始终为blocked
。在这种情况下,你应该去应用程序设置和手动更改权限
我发现我的问题来自于在最初的Android项目中使用onRequestPermissionsResult方法,只要我对它进行注释,一切都很好。
我试图了解原因,发现之前的维护项目人员没有在onRequestPermissionsResult
中写入super
,这导致react native在获得权限后没有回调结果。