关于android M中权限更改的广播操作

时间:2015-09-22 13:59:45

标签: android

当应用程序的权限设置从“设置”更改时,应用程序是否会获得任何广播或任何类型的警报?我有一个场景,我们在应用程序启动时启动某种日志记录并获得LOCATION GROUP权限。但是当用户在我们的应用程序崩溃之间撤销此权限时。当用户取消记录时,找不到任何方法来停止记录。此日志记录来自第三方库,因此我们也不能在其间进行任何检查权限检查。

1 个答案:

答案 0 :(得分:23)

  

当应用程序的权限设置从“设置”更改时,应用程序是否会获得任何广播或任何类型的警报?

没有记录。

如果用户撤消之前授予您的权限,您的流程将被终止。当您下次运行时,您将最终了解权限更改,作为检查权限的一部分。

如果用户授予之前被拒绝的权限,则您的进程已终止。但是,当您致电checkSelfPermission()时,您会发现自己有权访问。

这里的教训是:不要缓存权限查找结果。它们似乎是相当便宜的电话,所以只需根据需要拨打checkSelfPermission()

如果targetSdkVersion低于23,则checkSelfPermission()无效,但您应该获取虚假数据而不是SecurityException。对于位置修复,如果用户撤消了您的位置访问权限,则不应获取任何位置。

  

但是当用户在我们的应用程序崩溃之间撤销此权限时

我没有尝试过后台服务正在运行且用户撤消权限的情况。 终止您的流程,因此您可以在下次运行服务时了解权限更改。如果您发现您的流程被终止,则可能是Android中出现错误的迹象。