【问题标题】:Permission changed callback in Android 6.0Android 6.0 中的权限更改回调
【发布时间】:2015-12-10 10:09:18
【问题描述】:

我想知道当用户在 Android 6.0 上更改应用设置中的权限时,是否有某种方法可以收到通知。我一直在寻找这个答案,但没有运气。你知道广播接收器和一些特定的意图是否可行?或者也许有一些技巧可以实现这一点?

【问题讨论】:

  • 每当在 6.0 中更改权限时,都会调用 onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) 。您可以使用此处的任何模式来通知这一点。
  • onRequestPermissionsResult() 用户在设置中更改权限时不会调用

标签: java android permissions android-6.0-marshmallow


【解决方案1】:

根据this answer,当用户从设置屏幕撤销权限时,没有任何广播/事件可以拦截。

但“好”消息,假设这是您的担忧 - 如果在您的应用进程处于活动状态时权限状态发生任何更改,您的进程将被系统自动终止

【讨论】:

  • 但是,上次打开的 Activity 将被重新创建。如果它包含一个最初仅在授予权限时才创建的片段,它会重新创建该片段(甚至在调用 Activity 的 onCreate 之前),即使权限现在已经消失。因此,在使用权限之前必须非常仔细地检查权限。 (至少这是我在 android 7.1.1 上观察到的)
【解决方案2】:

您可以通过使用 AlarmManager 定期检查您感兴趣的权限(例如每 30 秒)并将其与您上次看到的值(例如保存在 SharedPreferences 中)进行比较来跟踪这一点。在最坏的情况下,您不会在计时器间隔内获得更新,但是用户在很短的时间间隔内多次更改权限的可能性很小。

请记住,您必须在设备启动时开始定期检查 (android.intent.action.BOOT_COMPLETED)。

【讨论】:

    猜你喜欢
    • 2016-04-03
    • 1970-01-01
    • 2016-11-22
    • 1970-01-01
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多