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?

Al responder, tenga en cuenta que se trata de un requisito de negocio que no tengo ningún control sobre.

Bueno, ayer tuve el mismo problema. Esto es lo que hice y funciona bien:

  1. Añadido android:launchMode="singleTask" a la actividad principal en el AndroidManifest.xml
  2. Llamado a mi jefe y decir: ey, esto va a tomar un largo tiempo … espera!
  3. 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 la forma más segura de autorizar a un usuario en Android?
  • Cómo evitar la captura de pantalla en Android
  • ¿Cómo almacenar de forma segura el token de acceso y el secreto en Android?
  • ¿Debemos usar el proveedor de seguridad de google con OkHttp?
  • Aplicación del sistema Android 101
  • ¿Es seguro guardar los tokens de acceso / actualización de Oauth2 en las Preferencias compartidas de Android?
  • ¿Cómo está comprobando Google SHA1 y el nombre del paquete en las llamadas de la API?
  • ¿Cómo puedo proteger una aplicación de Android a un dispositivo?
  • ¿Cómo usar la API Android KeyStore con API 18?
  • Autenticación con certificados de cliente con PhoneGap
  • Android java.security.cert.CertPathValidatorException: Ancla de confianza para la ruta de certificación no encontrada
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.