Requerir acceso cada vez que el usuario vuelve a la aplicación de Android
Estoy trabajando en una aplicación para Android que se ocupa de la información sensible de los usuarios. Uno de los requisitos es que el usuario está obligado a iniciar sesión en la aplicación cada vez que lo dejan y vuelven. Esto se soluciona fácilmente cuando el usuario presiona el botón Inicio y luego android:clearTaskOnLaunch
la aplicación (atributo android:clearTaskOnLaunch
en la Activity
de AndroidManifest.xml
). Sin embargo, necesitamos hacer lo mismo cuando el usuario presiona el botón Inicio, cambia a otra aplicación y luego regresa.
He investigado esto de todas las maneras en que puedo pensar y no he encontrado una solución viable. ¿Esto es posible con Android?
- El uso de preferencias compartidas para el inicio de sesión persistente, ¿es esa vulnerabilidad?
- Facturación en la aplicación de Android: Security.java dice "Error en la verificación de la firma"
- Android Keystore, valor seguro de la clave
- ¿Dónde debo almacenar números de tarjeta de crédito en Android?
- ¿Cómo puedo administrar las transacciones de facturación en la aplicación en un servidor externo de forma segura?
Al responder, tenga en cuenta que se trata de un requisito de negocio que no tengo ningún control sobre.
- SecurityException: No se puede iniciar el servicio Intención {act = com.google.android.c2dm.intent.REGISTER pkg = com.google.android.gms (tiene extras)}
- Permitir que sólo mis aplicaciones Android ejecuten api de punto final en java
- SetStorageEncryption no produce ningún efecto
- ¿Cuáles son posibles problemas de seguridad en Android
- ¿Cómo puedo diseñar una API / autenticación segura para aplicaciones móviles para acceder a un servicio?
- ¿Es el intercambio de archivos Bluetooth completamente seguro?
- Falla de confiabilidad de la aplicación en la aplicación v3
- ¿Existe una manera de almacenar de forma segura los datos de usuario en un dispositivo Android?
Bueno, ayer tuve el mismo problema. Esto es lo que hice y funciona bien:
- Añadido
android:launchMode="singleTask"
a la actividad principal en elAndroidManifest.xml
- Llamado a mi jefe y decir: ey, esto va a tomar un largo tiempo … espera!
- Fuimos y bebimos cerveza toda la noche.
Sólo para aclarar, mi actividad principal sólo tiene un botón que dice login y lanza la página de inicio de sesión.
¿Qué has probado? Siempre puede borrar cualquier sesión que esté guardando en el método adecuado del ciclo de vida de la actividad .
Si entiendo correctamente que desea solicitar una autorización cada vez que alguien retrocede en la aplicación, ya sea de nuevo o volver a ella, puede anular el evento de ciclo de vida de actividad onRestart () en la actividad (o actividades). Así que en onRestart () puede redirigir al usuario a la pantalla de inicio de sesión (también puede considerar onResume () según sus necesidades)
El gráfico del ciclo de vida de esta página lo hará más claro: http://developer.android.com/reference/android/app/Activity.html
¿Sería posible hacer una cosa basada en el tiempo, en lugar de estrictamente dejó la aplicación y regresó?
Usted podría tener un servicio separado que realiza un seguimiento de cuando la última vez que el usuario accedió a la aplicación fue.
Es decir, en cada onPause, la Actividad indica al servicio que se detuvo una Actividad. El servicio registra el tiempo de eso.
En cada onResume, la Actividad informa al Servicio que desea reanudar. Si ha transcurrido cierto tiempo desde la última onPause, el Servicio indica que se necesita un inicio de sesión.
Creo que esto haría una experiencia de usuario más agradable que cada vez que salen de la aplicación. Eso podría ser muy frustrante, tomar 30 segundos para leer un texto, y luego tener que iniciar sesión de nuevo.
Supongo que si lo modificas para que el tiempo de espera sea muy corto, tiene un comportamiento muy similar al que has solicitado de todos modos, pero con la opción de hacerlo menos draconion.
Creo que la forma más fácil de implementar esto, sería agregar un campo a su actividad principal como private boolean isLocked = true;
.
Para bloquear la aplicación cuando isLocked = true
otra, establezca isLocked = true
en el método onPause()
. Para asegurarse de que no bloquees tu aplicación, al volver de tus propias actividades, inicia a través de startActivityForResult()
y desbloquea en onActivityResult
.
Ahora puede registrarse onResume()
si su aplicación está bloqueada y redirigir al usuario a su pantalla de inicio de sesión.
- ¿Cuál es el punto de ContentResolver.bulkInsert (..)?
- No se puede iniciar la actividad, setOnClickListener