2
 const granted = await PermissionsAndroid.request(
        PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION, {
        title,
        message,
        buttonNeutral: "Ask Me Later",
        buttonNegative:"Cancel",
        buttonPositive: "OK"
 });

单击 buttonNegative 和 buttonNeutral 按钮有望立即解决承诺。相反,它没有解决承诺,并进一步从本机对话框请求权限。

这是预期的行为吗?不知道这两个按钮是干什么用的?

令人惊讶的是官方文档也没有对这两个按钮进行太多解释。

4

1 回答 1

0

我在运行 Android 9 的设备上运行官方文档上的示例。按下“REQUEST PERMISSIONS”按钮后,我确实得到了一个带有三个按钮的自定义弹出窗口。但是没有一个按钮实际上做任何事情。按其中任何一个,会弹出一个新的系统范围的警报,询问我是授予、拒绝还是不再询问所请求的权限。

如果按下授予或不再询问,则进一步按下“请求权限”按钮不会显示弹出窗口。并且请求总是返回“granted”或“never_ask_again”。如果按下拒绝,我们回到第一段中提到的情况。

从这种行为来看,自定义弹出窗口的目的,至少在 Android 9 上,只是为了理由。按钮(特别是肯定按钮)允许用户确认他/她知道权限请求背后的原因。然而,实际的权限授予/拒绝应该由系统范围的弹出窗口处理。

注意:您必须添加<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />才能AndroidMaanifest.xml允许请求权限。如果不是,请求将始终返回“never_ask_again”。

于 2021-06-25T02:04:47.283 回答