当用户在React Native中同意或拒绝时,无法获得android权限的回调



我使用react原生权限来获得相机权限,它在iOS中运行良好。但当用户同意或拒绝时,我无法获得android权限的回调。我试着用PermissionsAndroid替换它,但我遇到了同样的问题。

最后,我创建了一个React Native的新项目,并使用相同的代码获得了android权限的回调。出现这种情况的原因是什么?

注意:两个项目都使用相同版本的React Native。

  1. 请确保您的android/app/src/main/AndroidManifest.xml文件中有这个。如果没有,请添加它并重新生成您的应用程序
<uses-permission android:name="android.permission.CAMERA" />
  1. 您可以检查权限请求的状态,查看它是否被阻止或授予
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);
};
  1. 您可能第一次拒绝了权限,在这种情况下,对其他request()的响应将始终为blocked。在这种情况下,你应该去应用程序设置和手动更改权限

我发现我的问题来自于在最初的Android项目中使用onRequestPermissionsResult方法,只要我对它进行注释,一切都很好。

我试图了解原因,发现之前的维护项目人员没有在onRequestPermissionsResult中写入super,这导致react native在获得权限后没有回调结果。

最新更新