2016-11-17 1 views
4
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); 
    } 

Я хочу видеть диалог gps, когда отключается GPS-устройство android. , но даже gps выключите, status.getStatusCode() всегда успех, я думаю, что это была ошибка. Зачем?почему всегда LocationSettingsStatusCodes.SUCCESS даже отключить GPS

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; 
       } 
     } 
    }); 
} 

ответ

3

изменить приоритет, и он будет проверять как GPS и поставщика данных изменить его locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);