【发布时间】:2019-04-29 09:23:39
【问题描述】:
我正在开发一个需要录制音频的 react-native 应用程序。我正在使用以下代码来请求这样做的权限,
const permissionRequestReason = {
title: 'Permission To Record Audio',
message: 'Explain reason for audio recording here....',
buttonPositive: 'Continue'
}
export default AudioRecorder = {
record: async function () {
try {
if (Platform.OS === 'android') {
const permission = await PermissionsAndroid.check(PermissionsAndroid.PERMISSIONS.RECORD_AUDIO);
if (permission == false) {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.RECORD_AUDIO,
permissionRequestReason
);
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
if(__DEV__) console.log("WE HAVE AUDIO RECORD PERMISSION");
}
} else {
if(__DEV__) console.log("WE HAVE AUDIO RECORD PERMISSION");
}
} else {
if(__DEV__) console.log("iOS, so lets record");
}
} catch (error) {
if(__DEV__) console.log("ERROR REQUESTING AUDIO RECORD PERMISSION: " + error)
}
},
}
我的问题是我第一次请求许可时,没有显示合理的消息。我只得到标准的 Android 音频权限框。如果我对此单击拒绝,然后再次请求许可,那么我将得到理性对话。有人知道为什么我第一次没有得到它吗?
【问题讨论】:
-
“有人知道为什么我第一次没有得到它吗?”
shouldShowRequestPermissionRationale就是这样工作的。如果您想在第一次请求之前说明理由,您必须自己实施(即跟踪您是否曾经请求过许可)。 -
哦。好吧,我不觉得傻瓜:p。我想我可以用它来解释我为什么要请求权限。谢谢!
标签: android react-native permissions