Befolgen Sie die unten genannten Schritte
1) Erstellen Sie eine LocationRequest
nach Ihren Wünschen
LocationRequest mLocationRequest = LocationRequest.create()
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
.setInterval(10 * 1000)
.setFastestInterval(1 * 1000);
2) Erstellen Sie eineLocationSettingsRequest.Builder
LocationSettingsRequest.Builder settingsBuilder = new LocationSettingsRequest.Builder()
.addLocationRequest(mLocationRequest);
settingsBuilder.setAlwaysShow(true);
3) Erhalten Sie LocationSettingsResponse
Task
folgenden Code
Task<LocationSettingsResponse> result = LocationServices.getSettingsClient(this)
.checkLocationSettings(settingsBuilder.build());
Hinweis: LocationServices.SettingsApi
ist veraltet, verwenden Sie SettingsClient
stattdessen.
4) Fügen Sie a hinzu OnCompleteListener
, um das Ergebnis aus der Aufgabe zu erhalten. Wenn der Vorgang Task
abgeschlossen ist, kann der Client die Standorteinstellungen überprüfen, indem er den Statuscode des LocationSettingsResponse
Objekts überprüft .
result.addOnCompleteListener(new OnCompleteListener<LocationSettingsResponse>() {
@Override
public void onComplete(@NonNull Task<LocationSettingsResponse> task) {
try {
LocationSettingsResponse response =
task.getResult(ApiException.class);
} catch (ApiException ex) {
switch (ex.getStatusCode()) {
case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
try {
ResolvableApiException resolvableApiException =
(ResolvableApiException) ex;
resolvableApiException
.startResolutionForResult(MapsActivity.this,
LOCATION_SETTINGS_REQUEST);
} catch (IntentSender.SendIntentException e) {
}
break;
case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE:
break;
}
}
}
});
FALL 1 :: LocationSettingsStatusCodes.RESOLUTION_REQUIRED
Standort ist nicht aktiviert, aber wir können den Benutzer bitten, den Standort zu aktivieren, indem er ihn auffordert, den Standort mit dem Dialogfeld einzuschalten (durch Aufrufen startResolutionForResult
).
FALL 2 :: Die LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE
Standorteinstellungen sind nicht erfüllt. Wir haben jedoch keine Möglichkeit, die Einstellungen zu korrigieren, sodass der Dialog nicht angezeigt wird.
5) OnActivityResult
Wir können die Benutzeraktion im Dialogfeld "Standorteinstellungen" abrufen. RESULT_OK
=> Benutzer hat den Standort aktiviert. RESULT_CANCELLED
- Der Benutzer lehnte die Anforderung der Standorteinstellung ab.