- Autor del tema
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?