我们如何监听 Android 中的位置权限变化(不触发权限请求)?

Rup*_*ert 7 java android android-location kotlin android-fusedlocation

甚至有可能吗?我希望能够创建一个侦听器,该侦听器将收到有关位置权限更改的通知(无论应用程序是否触发它们)。据我所知,有获取当前权限状态的方法和请求权限的方法,但没有任何方法可以简单地允许应用程序监听更改。

例如,在 iOS 中,我们可以在 a 上设置一个委托,CLLocationManager然后通过locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus)在授权状态的任何更改上调用该委托。有谁知道 Android 中的任何等价物(最好与 API >= 17 兼容)?

Com*_*are 5

甚至有可能吗?

不,对不起。

据我所知,有获取当前权限状态的方法和请求权限的方法,但没有任何方法可以简单地允许应用程序监听更改。

如果用户授予您权限,您发现的唯一方法就是您checkSelfPermission()再次致电。

如果用户撤销先前授予的权限,正如 Michael 在评论中所建议的那样,您的进程将终止,您将checkSelfPermission()在下次运行应用程序时通过调用来了解权限更改。