gpt4 book ai didi

Android - 由于位置权限从设置中撤销而导致应用程序崩溃

转载 作者:行者123 更新时间:2023-12-03 16:45:00 34 4
gpt4 key购买 nike

我们使用 Android 后台服务进行位置跟踪,其中注册 fused google api 进行定期位置更新。当我们必须启动位置更新服务时,我们会请求位置权限,如果用户接受,我们就会启动服务并注册 fused google api。

但现在出现的问题是,一旦用户接受了权限并注册了位置更新的融合位置 API,后来用户就从应用程序的设备设置中撤销了位置权限。一旦用户执行此操作,应用程序就会因

而开始崩溃

java.lang.SecurityException: Client must have ACCESS_FINE_LOCATION permission to request PRIORITY_HIGH_ACCURACY locations.

遇到这种情况该如何处理?

最佳答案

这不是错误。这是 Android 6 (Marshmallow) 及以上版本的问题,或者我们可以说是功能。这是因为从 Android Marshmallow 开始,谷歌改变了用户访问危险权限(如位置权限)的方式,并且他们现在可以撤销它。在您的情况下,发生的情况是 savedInstanceState 值变得无效,因为您的应用进程在您撤销权限后被终止并重新启动。

一个可能的修复方法是将 null 传递给 Activity 的 onCreate()。这是因为即使您的进程被终止,savedInstanceState 仍然保留并在您返回应用程序后返回。如果您在没有打开应用程序的情况下执行相同的操作,它不会崩溃,因为 savedInstanceState 为 null。但如果后台服务正在执行某些位置任务,一旦您从设备设置中撤销位置权限,应用程序就会崩溃。

关于Android - 由于位置权限从设置中撤销而导致应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47950773/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com