Cuales son los indicadores de uso de Android
Tengo una aplicación que recibe una difusión desde el AlarmManager
. Después de esto, se inicia una Activity
transparente ( AlarmAlertDialogActivity
) que muestra un AlertDialog
. Al hacer clic en Cancelar en el resultado de AlertDialog
en una llamada a finish()
.
Dado que la AlarmAlertDialogActivity
no se inicia desde otra Activity
sino un receptor de difusión, se inicia con
- De datos en onActivityResult es nulo
- Terminar una llamada entrante mediante programación en android
- ¿Hay alguna manera de consultar un tipo específico de filtros de intención aplicaciones capaces?
- Android - Inicio de una aplicación desde una instancia de ApplicationInfo
- ¿Se puede crear un filtro de intención basado en la consulta?
Intent.FLAG_ACTIVITY_NEW_TASK
Esto significa que la Actividad se iniciará en una nueva tarea.
Mi problema es que cuando se relanza la aplicación de la historia reciente después de cancelar el AlertDialog
(es decir, manteniendo pulsado el botón de inicio y haciendo clic en el icono de la aplicación) se relanza AlertDialog. Había esperado usar las banderas finish()
/ Intent
que podría evitar esto; Lo que me gustaría que suceda es la última Activity
antes de que la actividad principal de AlertDialog
sea lanzada.
He intentado bitmasking Intent.FLAG_ACTIVITY_NO_HISTORY
como bandera adicional al lanzar AlarmAlertDialogActivity
pero esto parece no hacer ninguna diferencia.
Bitmasking Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
funciona, pero solo quitando la aplicación del historial reciente (como su nombre indica). Esto es perjudicial para la experiencia del usuario.
Entonces, ¿es posible obtener el flujo de IU que estoy buscando?
UPDATE – más información solicitada:
Logcat de Broadcast receptor, la actividad AlertDialog y mi actividad principal:
05-30 10:36:00.132: D/everyOtherApp(362): Received alarm broadcast at: Wed May 30 10:36:00 GMT+00:00 2012 05-30 10:36:00.262: D/everyOtherApp(362): AlarmAlertDialogActivity.onCreate() 05-30 10:36:00.912: D/everyOtherApp(362): AlarmAlertDialogActivity.onResume() 05-30 10:36:12.461: D/everyOtherApp(362): Cancel pressed //Cancel exits the activity. I now relaunch the app from recent history: 05-30 10:36:20.233: D/everyOtherApp(362): AlarmAlertDialogActivity.onCreate() 05-30 10:36:21.621: D/everyOtherApp(362): AlarmAlertDialogActivity.onResume()
Código para iniciar Actividad de BroadcastReceiver:
Intent intent = new Intent(new Intent(applicationContext, AlarmAlertDialogActivity.class)); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra(Constants.SCHEDULED_ALARM_TAG, alarm); applicationContext.startActivity(intent);
AlarmAlertDialogActivity en el archivo manfest:
<activity android:name=".AlarmAlertDialogActivity" android:theme="@android:style/Theme.NoDisplay" > </activity>
- Objeto serializable en la intención que devuelve como String
- FLAG_ACTIVITY_CLEAR_TOP?
- FLAG_ACTIVITY_CLEAR_TOP y onActivityResult
- Cómo desencadenar un evento como iniciar una aplicación cuando se selecciona un texto
- Presionando el botón de nuevo llama aCrear (Android)
- Cómo abrir una segunda actividad al hacer clic en el botón de la aplicación android
- Longitud máxima del método PutExtra de Intención? (Cierre de la fuerza)
- ¿Cómo obtengo la URL y el texto de selección desde el navegador de Android con la intención de compartir
Hice algo similar en otro proyecto. Tuve un BroadcastReceiver que recibió información sobre conectividad de datos y cambios en el perfil de SIM y mostró un diálogo (usando una actividad como la suya) advirtiendo al usuario que podría incurrir en cargos. Lo que acabé haciendo fue el siguiente:
En el manifiesto, en la etiqueta <Activity>
para su AlarmAlertDialogActivity, agregue lo siguiente:
android:excludeFromRecents="true" android:noHistory="true" android:taskAffinity=""
Explicación: establecer excludeFromRecents
y noHistory
como "true" aseguran que la actividad no aparecerá en la lista de aplicaciones recientes y también que una vez que el usuario se aleje de ella no podrá volver allí (lo que probablemente es lo que usted quiere). Establecer taskAffinity
a la cadena vacía garantiza que AlarmAlertDialogActivity se ejecute en su propia tarea incluso si la aplicación se ejecuta cuando se muestra el diálogo.
Siempre y cuando tengas otra actividad que funcione como actividad principal de tu aplicación (es decir: con filtros de intención para action.MAIN
y category.LAUNCHER
) esto debería resolver tu problema.
- Escala adecuada de un sitio web en dispositivos Android a través de WebView
- Obtener el valor de cadena de un objeto de matriz JSON en Java