So habe ich Problem mit dem der LocationSettingsRequest Dialog zu zeigen, wenn GPS nicht eingeschaltet ist.LocationSettingsRequest Dialog zeigt nie
Ich verfolge die SettingsApi Documentation
Hier ist der Code:
enableGpsSetting:
public void enableGpsSetting(){
if (mGoogleApiClient == null) {
mGoogleApiClient = new GoogleApiClient.Builder(context)
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
mGoogleApiClient.connect();
LocationRequest locationRequest = LocationRequest.create();
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationRequest.setInterval(30 * 1000);
locationRequest.setFastestInterval(5 * 1000);
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder()
.addLocationRequest(locationRequest);
builder.setNeedBle(true);
//**************************
builder.setAlwaysShow(true); //this is the key ingredient
//**************************
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 = 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(
MainActivity.this,
REQUEST_CHECK_SETTINGS);
} 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;
}
}
});
}
}
onActivityResult
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
// Check for the integer request code originally supplied to startResolutionForResult().
case REQUEST_CHECK_SETTINGS:
switch (resultCode) {
case Activity.RESULT_OK:
//startLocationUpdates();
break;
case Activity.RESULT_CANCELED:
enableGpsSetting();
break;
}
break;
}
}
Die Änderungen, die ich gemacht habe, ist Outerclass.this zu MainActivity.this ich FragmentActivity bin erstreckt weiß nicht, ob es irgendeine differece machen.
Es ist ein bisschen seltsam, wenn der Code als guidlines ist und nicht funktionieren.
Sie eine Implementierung übersprungen haben, versuchen, diese [vorherige SO Ticket] Überprüfung (http://stackoverflow.com/questions/31235564/locationsettingsrequest-dialog-onactivityresult-skipped), die zeigen, wie man richtig locationsettingsrequest implementieren. Erbauer. Ich hoffe diese Hilfe. –
Wenn dieses Problem weiterhin besteht, müssen Sie die Anfrage zur Standorteinstellung starten, nachdem Sie eine Verbindung mit den Google Play-Diensten hergestellt haben. Dies ist "GoogleApiClient.ConnectionsCallback # onConnected" – mr5