I'm using a GPS disabled AlertDialog and once the user enables GPS, I move onto another Activity via an Intent. The problem is that the AlertDialog appears and then moves onto the next activity before I can click on any button on the Dialog. What do i need to do so that the next Intent executes only once I have performed the action on the AlertDialog? Here is my code:
public void OnClickNearMe(View view) {
LocationManager locManager = (LocationManager) getSystemService(LOCATION_SERVICE);
if (!locManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
createGpsDisabledAlert();
}
Location locationResult = null;
MyLocation myLocation = new MyLocation();
boolean locationEnabled = myLocation.getLocation(this, locationResult);
if (locationEnabled == true) {
locationResult = myLocation.getLocationResult();
showResultsScreen(locationResult);
} else
Toast.makeText(this, R.string.noLoc, Toast.LENGTH_LONG).show();
return;
}
private void createGpsDisabledAlert() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Your GPS is disabled! Would you like to enable it?")
.setCancelable(false)
.setPositiveButton("Enable GPS",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
showGpsOptions();
}
});
builder.setNegativeButton("Do nothing",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
private void showGpsOptions() {
Intent gpsOptionsIntent = new Intent(
android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(gpsOptionsIntent);
}
private void showResultsScreen(Location locationResult) {
Intent resultsIntent = new Intent(this, ResultScreenList.class);
startActivity(resultsIntent);
}
Thanks in advance for all your answers!!!
It looks like the problem is that while the GPS location isn't enabled, you are still getting a location in myLocation.getLocation.
After you call createGpsDisabledAlert(), you probably should return instead of continuing with the method.
After you show the dialog,
createGpsDisabledAlert
will continue on and finish even before you click OK or Cancel. Maybe refactor the rest of the code inOnClickNearMe
to another method and call it only if location isn't enabled, and also call it after your settings page. Maybe something like: