私は、OKボタンとCANCELボタンでダイアログを表示することにより、onStart()でGPSを有効にするようにユーザーに要求するアクティビティを持っています。しかし、ユーザーがダイアログを操作する前にホームボタンを押して、アプリケーションを再起動すると、新しいダイアログボックスが古いダイアログボックスの上に表示され、ユーザーは2つのダイアログボックスを順番に表示します。アクティビティのonStopメソッドで古いダイアログボックスを閉じるにはどうすればよいですか?アクティビティが停止して再度開始された場合にGPSが2回発生するように要求します。
protected void onStart() {
super.onStart();
enableGPS();
}
private void enableGPS() { //GPS ENABLE RELATED METHOD
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder()
.addLocationRequest(mLocationRequest);
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: //GPS ALREDY TURNED ON
if (locationServiceConnected) {
if (ActivityCompat.checkSelfPermission(enableGPSActivity.this, android.Manifest.permission.ACCESS_FINE_LOCATION)== PackageManager.PERMISSION_GRANTED) {
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, enableGPSActivity.this);
}
}
else {
redirectStatus.setText("ERROR: Not able to connect to Location Service");
btnRetry.setVisibility(View.VISIBLE);
}
break;
case LocationSettingsStatusCodes.RESOLUTION_REQUIRED: //GPS NOT ALREDY TURNED ON, SHOW TURN ON DIALOG
try {
status.startResolutionForResult(enableGPSActivity.this, REQUEST_CHECK_SETTINGS); //CREATING DIALOG FOR GPS TURN ON
} catch (IntentSender.SendIntentException e) {
}
break;
case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE: //GPS CANNOT BE TURNED ON
redirectStatus.setText("Permission Available, not able to enable GPS");
btnRetry.setVisibility(View.VISIBLE);
break;
}
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) { //GPS ENABLE RELATED METHOD, DIALOG FOR GPS TURN ON
if (requestCode == REQUEST_CHECK_SETTINGS) {
if (resultCode == Activity.RESULT_OK) { // GPS TURN ON ACCEPTED
if (locationServiceConnected) {
if (ActivityCompat.checkSelfPermission(enableGPSActivity.this, android.Manifest.permission.ACCESS_FINE_LOCATION)== PackageManager.PERMISSION_GRANTED) {
redirectStatus.setText("Please Wait. Fetching Your Current Location");
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, enableGPSActivity.this);
}
}
}
if (resultCode == Activity.RESULT_CANCELED) { //GPS TURN ON REJECTED
redirectStatus.setText("Permission Available, GPS Off");
btnRetry.setVisibility(View.VISIBLE);
}
}
}
}