Pan*_*kaj 2 crash service android android-permissions android-fusedlocation
我们正在使用 android 后台服务进行位置跟踪,其中注册融合的 google api 以进行定期位置更新。当我们必须启动位置更新服务时,我们会请求位置许可,如果用户接受,则我们启动服务并注册 fused google api。
但是现在问题来了,一旦用户接受权限并融合位置 api 注册位置更新,后来用户从应用程序的设备设置中撤消了位置权限。一旦用户这样做,应用程序开始崩溃,因为
java.lang.SecurityException:客户端必须具有 ACCESS_FINE_LOCATION 权限才能请求 PRIORITY_HIGH_ACCURACY 位置。
如何处理这种情况?
这不是一个错误。这是 Android 6 (Marshmallow) 及以上的问题,或者我们可以说是功能。这是因为从 Android Marshmallow 开始,谷歌改变了用户授予访问危险权限(如位置权限)的方式,并且他们现在可以撤销它。在您的情况下,发生的情况是该savedInstanceState值无效,因为您的应用程序进程在您撤销权限后被终止并重新启动。
一种可能的解决方法是将 null 传递给onCreate()活动的 。这是因为即使在您的进程被终止后,它savedInstanceState仍然存在并在您返回应用程序后返回。如果你在没有打开应用程序的情况下做了同样的事情,它不会崩溃,因为它savedInstanceState是空的。但是,对于正在执行位置任务的后台服务,一旦您从设备设置中撤销位置权限,应用程序就会崩溃。
| 归档时间: |
|
| 查看次数: |
2115 次 |
| 最近记录: |