当前位置: 首页 > 知识库问答 >
问题:

正在检测权限是可以请求还是被永久拒绝[重复]

东郭凯捷
2023-03-14

情况
我的一个片段进入相机。因此,在重定向到活动之前,我当然需要首先检查活动中的权限。如果用户拒绝该权限,则活动将结束,并将其重定向到他参与的前一个活动。
此外,当活动开始并检测到该权限被永久拒绝时,我还希望显示一个不同的片段。(android权限对话框上的小复选框“不再询问”)

问题
我找不到正确的方法来检测权限是只被拒绝一次,还是上次选中了“Never ask Again”复选框并永久拒绝了权限。
请记住,我不想在onRequestPermissionsResult回调中知道这一点。我需要在活动的onCreate中知道当前是否授予、拒绝或永久拒绝权限。

我尝试的
ActivityCompat#ShouldShowRequestPermissionRationale似乎可以检测权限在过去是否被拒绝。如果它只被拒绝一次而不是永久地被拒绝,它还返回true。

PermissionChecker#checkPermission()似乎没有注意到永久与仅一次拒绝权限状态之间的任何区别。

问题
是否有任何方法可以检测权限被拒绝但仍然可以请求,或者是否被永久拒绝?

共有1个答案

凌嘉勋
2023-03-14

是否有任何方法可以检测一个权限被拒绝但仍然可以被请求,或者是否被永久拒绝?

不幸的是,没有官方API可用于检测当用户选择“不再问一遍”时是否永久拒绝权限。

有一种工作使用ShouldShowRequestPermissionRationale。创建默认值为false的SharedPreference,并将ShouldShowRequestPermissionRationale返回的值存储在其中。在更新值之前,请检查设置的值是否为true。如果它是true,那么就不要更新它。

每当您要检查权限时,请从SharedPreference中获取值和ShouldShowRequestPermissionRationale返回的当前值。如果ShouldShowRequestPermissionRationale返回FalseSharedPreference中的值为True,则可以推断用户选择了Never ask Again

您可以参考我的博客,在那里我描述了这种方法。

 类似资料:
  • 问题内容: 我有一个在Kubernetes中的POD上运行的应用程序。我想将一些输出文件日志存储在持久存储卷上。 为此,我在NFS上创建了一个卷,并通过相关的卷声明将其绑定到POD。当我尝试写入或访问共享文件夹时,由于“ NFS”显然是只读的,因此收到“权限被拒绝”消息。 以下是我用来创建卷的json文件: 以下是POD配置文件 有没有办法更改权限? 更新 这是PVC和NFS配置: PVC: NF

  • 问题内容: 当我尝试运行简单的docker命令时,例如: 我收到一条错误消息: 获得权限被拒绝… /var/run/docker.sock:connect:权限被拒绝 当我检查权限 我看到这一行: 因此,我遵循许多论坛的建议并将本地用户添加到docker组: 但这无济于事。我仍然收到非常相同的错误消息。我该如何解决? 问题答案: 对于那些刚接触shell的人,命令: 需要在您的外壳中定义。默认情况

  • 问题内容: 尝试显示URI时出现以下异常。我认为这是在我的活动停止后发生的,我尝试再次访问可行的URI。还有其他问题可以解决这个问题,但是我对如何对我的代码应用任何解决方案感到非常困惑,因为我的takePhotoIntent允许拍照或从图库中选择图片(如下所示)。 我的createImageFile和我的takePhotoIntent: 问题答案: 根据Storage Access Framewo

  • 问题内容: 我对编码比较陌生,遇到了麻烦。 我有这段代码可以将数据发送到Firebase 但是,我不断收到错误: FIREBASE警告:设置为/ users /(GoogleID)失败:Permission_denied 2016-05-23 22:52:42.707 firebase.js:227未捕获(承诺)错误:PERMISSION_DENIED:权限被拒绝(…) 当我尝试查找时,它谈论的是

  • 问题内容: 很抱歉来到这里问这个问题,但是我已经读完了所有互联网,试图找到解决方案,但是我仍然遇到这个问题… 我已经成功安装了Jenkins(让我在仍有希望的时候开始)可以在我们的持续集成流程中使用它。 我试图从这样一个简单的例子开始: 但是每次启动时,都会出现此错误: 问题在于用户jenkins(服务和主节点以Jenkins的身份运行)拥有此存储库上的所有权限。我试图授予组和其他人读取和执行的权

  • 问题内容: 我正在尝试将查询写入文件以进行调试。该文件位于中。我要写入的文件是。 我正在尝试使用 但是我越来越 file_put_contents(queries.txt)[function.file-put-contents]:无法打开流:权限被拒绝 我的文件chmod’d为777,可能是什么问题? 问题答案: 尝试调整目录权限。 在终端上运行(从包含数据库文件夹的目录中运行) apache,如