Hola a tod@s!
Estoy desarrollando una app que necesita del GPS, por lo que al iniciarla lo primero que hago es comprobar si está activo o no, en caso de que no esté activo muestro un dialogo de adventencia con dos botones. Uno dirige al usuario al menú del terminal para activar el GPS y el otro sale de la aplicación. Además, una vez regresamos del menú de activación del GPS comprueba de nuevo si efectivamente ha sido activado. Si no lo ha sido el mensaje persiste. Os pongo el código:

import android.location.LocationManager;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;

public class SplashScreenActivity extends Activity
{
	int cont = 0;
	
	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_splash_screen);
		
		cont = 0;
		comprobarGPSActivo();
	}

	private void comprobarGPSActivo()
	{
		LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
		
		if(locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER))
		{
			Log.d("", "GPS ACTIVO");
		}
		else
		{
			muestraAlertaGPSDesactivado();
		}
	}

	@Override
	protected void onResume()
	{
		super.onResume();
		if(cont!=0)
		{
			comprobarGPSActivo();
		}
		cont = 1;
	}

	private void muestraAlertaGPSDesactivado()
	{
		AlertDialog.Builder dialogoAlerta = new AlertDialog.Builder(this);
		
		dialogoAlerta.setMessage(R.string.mensaje_gps_desactivado)
			.setCancelable(false)
			.setPositiveButton(R.string.ajustes, new DialogInterface.OnClickListener()
			{
				@Override
				public void onClick(DialogInterface dialog, int which)
				{
					abrirAjustesGPS(dialog);
				}
			});
		
		dialogoAlerta.setNegativeButton(R.string.cancelar, 
				new DialogInterface.OnClickListener()
				{
					@Override
					public void onClick(DialogInterface dialog, int which)
					{
						System.exit(0);
					}
				});
		
		AlertDialog alerta = dialogoAlerta.create();
		alerta.show();
	}

	private void abrirAjustesGPS(DialogInterface dialog)
	{
		dialog.cancel();
		Intent abrirAjustesGPS = new Intent(
			android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
		startActivity(abrirAjustesGPS);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.splash_screen, menu);
		return true;
	}

}

El código hace lo que había pensado excepto por un pequeño detalle, si accedo al menú de ajustes, activo el GPS y regreso a la app el botón back no funciona, es decir, en este caso debería de salir de la aplicación ya que es la primera actividad que inicio y no es así, puedo pulsarlo las veces que quiera que no se mueve de esa pantalla.
He probado a implementar este código pero era lo mismo:

public void onBackPressed() {
     System.exit(0);
     super.onBackPressed();
}

Alguien sabe que puede estar sucediendo?

¿ El botón back es el botón del propio móvil ?

arts escribió

¿ El botón back es el botón del propio móvil ?

Sí, es el del movil

Yo haría un debug de la aplicación paso por paso por si acaso te muestra que ocurre cuando pulsas el botón de atras del emulador. A las malas te creas en el layout que no te vuelve un botón volver que haga un Intent i = new Intent(claseactual.class, lugar al que ir). Lo añades en el manifest y suerte :/ no se me ocurre nada ya que ese botón ya viene programado por el propio móvil, no entiendo porque no te funciona

Madre mia y nosotros en android aun en formularios joderrrrr..........

Yo no he dado formularios :/ solo he dado como hacer botones, algún que otro menú, pasar de una pantalla a otra, algo de hilos y de bases de datos, y todo de http://www.javaya.com.ar/androidya/

3 meses más tarde

en el onCreate te falte añadir

getActionBar().setDisplayHomeAsUpEnabled(true);

para habilitar el botón de la aplicación como botón funcional.