如何知道用户检查"永远不要再询问"在调用requestPermissions之前

时间:2016-01-03 05:25:40

标签: android android-permissions android-6.0-marshmallow

我想知道,如何知道用户检查"再也不要问"在致电requestPermissions之前。

我已经完成了Android M - check runtime permission - how to determine if the user checked "Never ask again"?但尚未获得正确的解决方案。

在此之前,请允许我解释一下我的动机。

我有以下反馈对话框表单。

enter image description here

当用户选中回复我 明确时,如果尚未授予权限,我将执行requestPermissions。可能有3种可能的结果。

第一个结果。第一次调用requestPermissions时会发生

enter image description here

第二个结果。调用requestPermissions第二次或更长时间

时会发生错误

enter image description here

第3个结果。当用户勾选并且#34;再也不会再询问"

时发生

不会显示任何对话框。 requestPermissions永远不会弹出任何对话框。我需要代表用户取消选中该复选框,因为onRequestPermissionsResult会告诉我权限被拒绝。

第三个结果会产生糟糕的用户体验。当用户勾选复选框时,它将立即解开。

我想在显示反馈表之前隐藏回复我。要做到这一点,我需要知道用户是否已经检查过#34;永远不要再问'#34;。

shouldShowRequestPermissionRationale并没有多大帮助。因为,shouldShowRequestPermissionRationale将在2个案例中返回false

  1. 用户已经检查过#34;永远不要再问及#34;。
  2. 之前从未调用过
  3. requestPermissions
  4. 我找不到区分两者的方法。

1 个答案:

答案 0 :(得分:0)

当您请求权限时,请将布尔值shared preference保存为true。然后,您将能够检查其值,以了解您是否已经请求了许可,并且知道shouldShowRequestPermissionRationale()是否因为您之前从未询问过或因为他们再也没有说过或者因为许可是被设备政策禁用。