普通用户
安卓判断系统定位是否被打开 [复制链接]
管理员 发表于 2025-02-28 81 0

复制即用,兼容安卓8及以下,安卓9以上部分国产魔改系统可能不兼容。

引用 android.content.Context
引用 android.location.LocationManager
引用 android.os.Build
引用 android.provider.Settings
函数 取系统定位是否已打开() 为 逻辑型
    变量 是否已打开 = 假
@{
    LocationManager locationManager = (LocationManager) MainActivity.getContext().getSystemService(Context.LOCATION_SERVICE);
    if (locationManager == null) {
        是否已打开 = false;
    }
    // 直接硬核判断 Android 8 及以下
    if (Build.VERSION.SDK_INT < 28) { 
        try {
            // 读取系统全局定位开关状态
            int mode = Settings.Secure.getInt(
                MainActivity.getContext().getContentResolver(), 
                Settings.Secure.LOCATION_MODE
            );
            是否已打开 = (mode != Settings.Secure.LOCATION_MODE_OFF);
        } catch (Settings.SettingNotFoundException e) {
            // 如果系统设置被魔改(比如某些国产手机),直接检查 GPS 和网络定位开关
            boolean gpsOn = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
            boolean networkOn = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
            是否已打开 = gpsOn || networkOn;
        }
    } else {
        // 如果是 Android 9+ 的代码(虽然你用不到,但留着备用)
        是否已打开 = false; // locationManager.isLocationEnabled();
    }
}
    返回 是否已打开
结束 函数
该贴还没有人回复
 作者信息
管理员
USB专业用户 云验证
VcnStudio官方教程、文档、课程发布视频录制账号。
专业开发指导服务

响应时间:5分钟

服务方式:官方1对1服务

工作时间:工作日 9:00 - 18:30

专业团队 · 开发指导 · 极速响应


官网 | 基础视频教程 | 在线文档 下载 VcnStudio IDE

© VcnStudio Inc All Rights Reserved

蜀ICP备17024229号