在代码中添加检查权限的逻辑,当没有获取到位置权限时,不执行检测代码,避免应用崩溃。修改后的代码如下:

@Override
public void run() {
    System.out.println("noFakeLocation");
    ToastUtil.showToast(mContext.get(), "noFakeLocation");
    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

    if (ContextCompat.checkSelfPermission(mContext.get(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
        @SuppressLint("MissingPermission") Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

        if (location != null) {
            boolean isMock = location.isFromMockProvider();
            if (isMock) {
                // 位置来自模拟提供者
                System.out.println(""+"isMock : return true;");
                //return true;
            } else {
                // 位置不来自模拟提供者
                System.out.println(""+"isMock : return false;");
                //return false;
            }
        }
    }
}

在代码中添加了权限检查的逻辑,使用ContextCompat.checkSelfPermission()方法检查是否有位置权限。如果有权限,则执行检测代码;如果没有权限,则不执行检测代码,避免应用崩溃。

以下是一段安卓中检测有无使用位置提供者的java代码如何修改让其在没有权限时不执行避免应用崩溃? Override public void run SystemoutprintlnnoFakeLocation; ToastUtilshowToastmContextget noFakeLocation;

原文地址: https://www.cveoy.top/t/topic/jbI1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录