我的代码是:
const handleButtonPress = async () => {
try {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.CAMERA,
{
title: 'Camera Permission',
message: 'This app needs access to your camera to scan QR codes.',
buttonPositive: 'OK',
buttonNegative: 'Cancel',
},
);
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
setShowScanner(true);
setScannedData('');
} else {
console.log('Camera permission denied');
}
} catch (err) {
console.warn(err);
}
};
我使用了一个按钮来尝试获得访问相机的权限:
TouchableOpacity style={{ padding: 10 }} onPress={handleButtonPress}>
<Text style={{ fontSize: 20 }}>Scan QR Code</Text>
</TouchableOpacity>
我尝试按下按钮来获取相机权限,但它直接拒绝了,没有显示弹出窗口。
我已在 AndroidManifest.xml 中添加了这些行:
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
我尝试卸载并重新安装也无法弹出窗口。 这导致我无法在我的应用程序中使用相机。
在你的 android/build.gradle 中确保 minSdkVersion >=23
如果权限请求被拒绝多次,则视为永久拒绝,并且不再提示该请求。
如果用户在设备上安装您的应用程序的整个生命周期内多次点击拒绝特定权限,则当您的应用程序再次请求该权限时,用户将不会看到系统权限对话框。
从设置重置状态:
应用信息 -> 权限 - 相机 - 每次询问
有关详细信息,请参阅权限对话框可见性。