Android 相机权限请求不会触发请求弹出窗口
Android camera permission request does not trigger request popup
我正在使用 React Native 并试图为我的 Android 应用授予应用摄像头权限。
我正在使用 RN v0.59.9 和 SDK 28。
使用下面的代码,应用程序成功请求访问联系人的权限,但它没有请求摄像头权限,即使摄像头权限请求的代码从 直接 official docs
可能出了什么问题?
import { PermissionsAndroid } from 'react-native';
export const requestPermissions = () => {
PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.READ_CONTACTS,
{
'title': 'Contacts',
'message': 'The app would like to view your contacts.'
}
)
requestCameraPermission();
}
async function 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) {
console.log('You can use the camera');
} else {
console.log('Camera permission denied');
}
} catch (err) {
console.warn(err);
}
}
更新
如果我像这样删除联系人权限请求:
export const requestPermissions = () => {
// PermissionsAndroid.request(
// PermissionsAndroid.PERMISSIONS.READ_CONTACTS,
// {
// 'title': 'Contacts',
// 'message': 'The app would like to view your contacts.'
// }
// )
requestCameraPermission();
}
function requestCameraPermission() {
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',
},
);
}
相机请求有效,看来我不能像这样链接它们?
来自评论:权限对话框不会阻止,因此在您的第一个示例中,它会在显示联系人对话框后立即尝试请求相机权限。 IIRC,这将导致第二个请求立即 return 一个空结果,而你从中看不到任何东西。正如我提到的,我不熟悉 React Native,但我猜如果你也在联系人块中执行 await,它会起作用。
我正在使用 React Native 并试图为我的 Android 应用授予应用摄像头权限。
我正在使用 RN v0.59.9 和 SDK 28。
使用下面的代码,应用程序成功请求访问联系人的权限,但它没有请求摄像头权限,即使摄像头权限请求的代码从 直接 official docs
可能出了什么问题?
import { PermissionsAndroid } from 'react-native';
export const requestPermissions = () => {
PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.READ_CONTACTS,
{
'title': 'Contacts',
'message': 'The app would like to view your contacts.'
}
)
requestCameraPermission();
}
async function 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) {
console.log('You can use the camera');
} else {
console.log('Camera permission denied');
}
} catch (err) {
console.warn(err);
}
}
更新
如果我像这样删除联系人权限请求:
export const requestPermissions = () => {
// PermissionsAndroid.request(
// PermissionsAndroid.PERMISSIONS.READ_CONTACTS,
// {
// 'title': 'Contacts',
// 'message': 'The app would like to view your contacts.'
// }
// )
requestCameraPermission();
}
function requestCameraPermission() {
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',
},
);
}
相机请求有效,看来我不能像这样链接它们?
来自评论:权限对话框不会阻止,因此在您的第一个示例中,它会在显示联系人对话框后立即尝试请求相机权限。 IIRC,这将导致第二个请求立即 return 一个空结果,而你从中看不到任何东西。正如我提到的,我不熟悉 React Native,但我猜如果你也在联系人块中执行 await,它会起作用。