如果一个应用程序调用ActivityCompat.requestPermissions(.),那么操作系统就会显示一个带有拒绝和允许按钮的对话框。还有一个“永远不要再显示这个”的勾选框。
然而,我不可能看到应用程序知道用户是否已经勾选了这个框。在onRequestPermissionsResult(.)中,如果用户单击“拒绝”,则grantResults
参数为“拒不”,如果用户在单击“拒绝”之前单击勾选框,则为拒不。
那么,是否有一个应用程序可以找出用户是否不想再次看到该对话框?
发布于 2015-10-19 13:57:08
您可以使用shouldShowRequestPermissionRationale() --在一些情况下,它将返回false
:
通过将它与共享的首选项结合起来,如果您请求了许可,就可以有效地确定当您调用requestPermissions()时,他们是否会看到对话框。
发布于 2022-09-23 03:13:33
正如伊恩湖所暗示的(这里),我们可以使用持久存储(例如共享首选项)作为一种启发式,以确定操作系统何时会忽略对requestPermissions()的调用。
在我看来,在持久存储中保存这个布尔值的点是用户点击弹出的“请求权限基本原理”中的正按钮,从而触发对requestPermissions()的第二次调用。
随后,如果shouldShowRequestPermissionRationale()返回false
,并且持久存储中的布尔值返回true
,那么我们应该将用户定向到Settings应用程序,而不是对requestPermissions()方法进行第三次调用。
有关上述内容的具体示例,请参阅我为演示此解决方案而设置的这个小应用程序。
以上所述,Android API不允许我们对操作系统提出一个非常简单的问题,这是一个巨大的耻辱:“用户是否永久拒绝了许可?”
https://stackoverflow.com/questions/33224432
复制相似问题