studio - location manager android
Verifique si el usuario ha habilitado el GPS después de que se le solicite (1)
¿Por qué no simplemente ver LocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)
en su método onActivityResult()
? Cuando el usuario regrese, debe llamarse a este método porque llamó a startActivityForResult()
. Si el usuario ha habilitado GPS, entonces isProviderEnabled()
ahora debería devolver un resultado diferente.
Alternativamente, siempre haga la verificación GPS en su método onResume. Si el usuario regresa de la configuración de Ubicación y no ha habilitado el GPS, entonces simplemente recibirá el mismo aviso hasta que el GPS esté habilitado.
¿O me estoy perdiendo algo?
Simple y simple. Comienzo una Actividad y verifico si el teléfono tiene habilitado el módulo GPS o no. Si no está habilitado, solicito al usuario un cuadro de diálogo y le pregunto si quiere habilitarlo manualmente. En Sí, activo los Ajustes de Ubicación. Ahora el usuario puede habilitarlo si lo desea, pero necesito verificar lo que ha hecho.
try {
isGPSEnabled = locationManager
.isProviderEnabled(LocationManager.GPS_PROVIDER);
} catch (Exception ex) {}
if (isGPSEnabled) {
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 0, 0, locationListenerGps);
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(
"Your GPS module is disabled. Would you like to enable it ?")
.setCancelable(false)
.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
// Sent user to GPS settings screen
final ComponentName toLaunch = new ComponentName(
"com.android.settings",
"com.android.settings.SecuritySettings");
final Intent intent = new Intent(
Settings.ACTION_LOCATION_SOURCE_SETTINGS);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setComponent(toLaunch);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivityForResult(intent, 1);
dialog.dismiss();
}
})
.setNegativeButton("No",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
Necesito saber qué ha elegido el usuario en la configuración de Ubicación, cuando regresa para continuar con mi lógica en el código. Básicamente, necesito esperar a que el usuario haga una elección y regresar a mi actividad, y también volver a verificar el estado del módulo gps nuevamente.