GPS 服务检查,检查设备上的 GPS 是启用还是禁用

GPS Service Check, to check whether GPS is enabled or disabled on a device

我使用了 Stack Overflow 中的以下代码来检查设备上的 GPS 是启用还是禁用

public static boolean isLocationEnabled(Context context) {
    int locationMode = 0;
    String locationProviders;

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        try {
            locationMode = Settings.Secure.getInt(context.getContentResolver(), Settings.Secure.LOCATION_MODE);

        } catch (Settings.SettingNotFoundException e) {
            e.printStackTrace();
        }

        return locationMode != Settings.Secure.LOCATION_MODE_OFF;

    } else {
        locationProviders = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
        return !TextUtils.isEmpty(locationProviders);
    }


}

它在我的设备 (Huawei G610) 上运行良好,没有任何问题。然后我把应用程序给了一个使用三星 Galaxy Note 的朋友,他说它不会通知是否未启用 GPS 服务。

此函数用于在 GPS 未启用时触发警告对话框以要求用户启用它。

我不知道为什么它不能在他的设备上运行,非常感谢您的帮助。我问的是它不能在某些设备上工作而在某些设备上工作的原因。

谢谢。

您可以使用以下代码检查位置是否已启用。我会在所有设备上工作

LocationManager location_manager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
        LocationListener listner = new MyLocationListener();


        boolean networkLocationEnabled = location_manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
        boolean gpsLocationEnabled = location_manager.isProviderEnabled(LocationManager.GPS_PROVIDER);

        if (networkLocationEnabled || gpsLocationEnabled) {

            if (location_manager.getAllProviders().contains(LocationManager.NETWORK_PROVIDER) && networkLocationEnabled) {
                location_manager.requestLocationUpdates(
                        LocationManager.NETWORK_PROVIDER, 2000, 2000, listner);
                location_manager
                        .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
            } else if (location_manager.getAllProviders().contains(LocationManager.GPS_PROVIDER) && gpsLocationEnabled) {
                location_manager.requestLocationUpdates(
                        LocationManager.GPS_PROVIDER, 2000, 2000, listner);
                location_manager
                        .getLastKnownLocation(LocationManager.GPS_PROVIDER);

试试这个。
私人位置管理器 lm;

 lm = (LocationManager)          getActivity().getSystemService(getActivity().LOCATION_SERVICE);
 if(!lm.isProviderEnabled(LocationManager.GPS_PROVIDER)){
     Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
     startActivity(intent);
 }

你的清单文件应该设置权限 您需要的主要权限是 android.permission.ACCESS_COARSE_LOCATIONandroid.permission.ACCESS_FINE_LOCATION