【问题标题】:AndroidPermission rational being shown AFTER request, not before请求后显示 Android 权限原理,而不是之前
【发布时间】: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


【解决方案1】:

正如迈克尔在他的评论中指出的那样,这是预期的行为,所以错误是我对代码应该是什么的期望。因此将其标记为已解决。[编辑] 或者至少我会在 2 天内完成,这是我必须等待多长时间才能将其标记为答案:p。

【讨论】:

    猜你喜欢
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    • 1970-01-01
    相关资源
    最近更新 更多