Why always LocationSettingsStatusCodes.SUCCESS even disable GPS

if(!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {

    mGoogleApiClient = new GoogleApiClient
        .Builder(this)
        .enableAutoManage(this, 34992, this)
        .addApi(LocationServices.API)
        .addConnectionCallbacks(this)
        .addOnConnectionFailedListener(this)
        .build();
    mGoogleApiClient.connect();
    locationChecker(mGoogleApiClient, this);
    }

I want to see gps dialog when disconnect groid. but even gps is turned off, status.getStatusCode()always a success, I think it was a mistake. why?

public static void locationChecker(GoogleApiClient mGoogleApiClient, final Activity activity) {

    LocationRequest locationRequest = LocationRequest.create();
    locationRequest.setPriority(LocationRequest.PRIORITY_NO_POWER);
    //locationRequest.setInterval(864 * 1000);
    //locationRequest.setFastestInterval(864 * 1000);
    LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder()
    .addLocationRequest(locationRequest);
    builder.setAlwaysShow(true);
    PendingResult<LocationSettingsResult> result =
    LocationServices.SettingsApi.checkLocationSettings(mGoogleApiClient, builder.build());

    result.setResultCallback(new ResultCallback<LocationSettingsResult>() {

    @Override
    public void onResult(LocationSettingsResult result) {
        final Status status = result.getStatus();
        final LocationSettingsStates state = result.getLocationSettingsStates();
            switch (status.getStatusCode()) {
                case LocationSettingsStatusCodes.SUCCESS:
                // All location settings are satisfied. The client can initialize location
                // requests here.
                break;
                case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
                // Location settings are not satisfied. But could be fixed by showing the user
                // a dialog.
                try {
                // Show the dialog by calling startResolutionForResult(),
                // and check the result in onActivityResult().
                status.startResolutionForResult(
                activity, 1000);
                } catch (IntentSender.SendIntentException e) {
                // Ignore the error.
                }
                break;
                case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE:
                // Location settings are not satisfied. However, we have no way to fix the
                // settings so we won't show the dialog.
                break;
                }
        }
    });
}
+4
source share
1 answer

change the priority and it will check both the GPS data and the provider change it to locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

+3
source

Source: https://habr.com/ru/post/1661065/


All Articles