1

我使用 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);
    }


}

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

如果 GPS 未启用,则此功能用于触发警报对话框以要求用户启用它。

我不知道为什么它不能在他的设备上运行,非常感谢您的帮助。我在询问它无法在某些设备上运行并在某些设备上运行的原因。

谢谢。

4

2 回答 2

1

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

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);
于 2016-03-21T05:17:11.207 回答
1

试试这个。
私人位置管理器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

于 2016-03-21T05:17:25.690 回答