Android - 由于设置撤销了位置权限导致应用崩溃

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android - 由于设置撤销了位置权限导致应用崩溃相关的知识,希望对你有一定的参考价值。

我们正在使用android后台服务进行位置跟踪,注册融合的谷歌API以进行定期更新。当我们开始为位置更新服务时,我们要求位置许可,如果用户接受,那么我们开始服务并注册融合的谷歌api。

但是现在问题是,一旦用户接受了权限并且注册了位置更新的融合位置api,以后用户就从应用程序的设备设置中撤消了位置许可。用户执行此操作后,应用程序将因崩溃而崩溃

java.lang.SecurityException:客户端必须具有ACCESS_FINE_LOCATION权限才能请求PRIORITY_HIGH_ACCURACY位置。

如何处理这种情况?

答案

在主活动中添加此方法,并在onCreate()方法中调用它;

public boolean havePermission() {
        if (Build.VERSION.SDK_INT >= 23) {
            if (checkSelfPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED && checkSelfPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
                return true;
            } else {
                ActivityCompat.requestPermissions(this , new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, 1);
                return false;
            }
        }
        else {
            return true;
        }
    }

并且不要忘记在manifest.xml中添加这两个权限

以上是关于Android - 由于设置撤销了位置权限导致应用崩溃的主要内容,如果未能解决你的问题,请参考以下文章

一次性权限导致后台计划作业和警报被取消

Android M:以编程方式撤销权限

Android M:以编程方式撤销权限

Android 6.0 运行时权限处理

如何在定位服务启动后捕获撤销的 Android 定位权限?

Appstate 不断在 Android 中的 React Native 中获得变化