通过单击某个按钮(例如,“定位”),应用程序向用户请求必要的权限。因此,他可以接受、拒绝或拒绝并禁止进一步询问。如果选择了后一个选项,则不再出现要求权限的窗口。由于您仍然需要报告缺少权限并提供授予权限的机会,因此在没有必要权限的情况下,我会显示一个我自定义的对话框,其中包含“单击此处转到设置并授予必要权限”之类的文本。” 只是现在,如果用户还没有点击“不再显示”,那么会弹出系统窗口询问权限和我制作的对话框。其实问题是:如何检查用户是否单击了“不再显示”以及是否弹出系统窗口并提出请求?仅当用户没有看到权限的直接请求时才显示您的对话框。还是在这种情况下做得不同?也许您通常可以从系统窗口中删除“不再显示”项?
不。
您可以在 onRequestPermissionsResult 中检查shouldShowRequestPermissionRationale方法。
PS 为了查明用户是否选中了“不再询问”复选框,您需要在 中调用此方法
onRequestPermissionsResult,而不是在检查权限之前调用此方法。否则,它也会false在第一次请求权限时返回。我正在使用库https://github.com/florent37/RuntimePermission
使用示例如下:
Google 制定了特殊规则来请求开发人员必须(!)遵循的“危险”权限。
让我们简要地看一下它们。
checkSelfPermission,如果是,则继续应用程序的正常运行。shouldShowRequestPermissionRationale.checkSelfPermission.onRequestPermissionsResult,如果成功,你将解锁工作所需的界面元素。全部!不能再向用户强加任何建议,更不能用“去那里获得许可”的对话框挡住屏幕,也就是说,我们正在谈论一种对用户的微妙态度。