Android: detección del lanzamiento de la aplicación desde su hogar o su historial

¿Cuál es la mejor forma de detectar cuándo se ha lanzado una “Aplicación” de Android desde la pantalla de Inicio / Historial?

Básicamente, lo que bash lograr es obligar al usuario a iniciar sesión en ciertas pantallas cada vez que vuelven a la aplicación (es decir, tienen acceso total a todas las actividades una vez que inician sesión, pero esencialmente quiero que se vuelvan a autenticar cuando volver a la aplicación mediante el inicio en la pantalla de inicio).

Sé que se han hecho preguntas similares antes (es decir, cómo iniciar inicios de una aplicación), pero ninguna de las que he visto ha podido resolver mi problema. Todas las ideas son bienvenidas …

¿Cuál es la mejor forma de detectar cuándo se ha lanzado una “Aplicación” de Android desde la pantalla de Inicio / Historial?

No puedes, AFAIK.

Básicamente, lo que bash lograr es obligar al usuario a iniciar sesión en ciertas pantallas cada vez que vuelven a la aplicación (es decir, tienen acceso total a todas las actividades una vez que inician sesión, pero esencialmente quiero que se vuelvan a autenticar cuando volver a la aplicación mediante el inicio en la pantalla de inicio).

Utilice un sistema de inicio de sesión sensato y fácil de usar. Por ejemplo, si siente que sus credenciales de inicio de sesión están obsoletas en función del tiempo, entonces oblíguelas a iniciar sesión de nuevo. Puede hacerlo marcando las credenciales en onCreate() , y si están obsoletas, llame a startActivity() para iniciar su actividad de inicio de sesión (o startActivity() en su cuadro de diálogo de inicio de sesión, o cualquiera que sea su forma de iniciar sesión).

Por supuesto, un enfoque aún mejor es omitir el inicio de sesión por completo. A menos que sea una “contraseña segura”, una aplicación bancaria u otra cosa que necesite una seguridad superior a la media, no es necesario que inicie sesión, y los usuarios se irritarán si consideran que su requisito de inicio de sesión es innecesario. La mayoría de las aplicaciones móviles no requieren autenticación.

Forzar un inicio de sesión basado en cómo llegaron a la actividad es hostil para el usuario. Les está diciendo a los usuarios que se digna usar sus teléfonos para otras cosas además de su aplicación que son ciudadanos de segunda clase.

Qué pasa

  if((getIntent().getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY )!=0) { Log.d(TAG, "Called from history"); } 

? Esto usa una simple bandera de intención .

simplemente crea una actividad de tocón que no tiene una vista de contenido y lanza otras actividades al inicio de la aplicación

por ejemplo, ponga lo siguiente en onCreate:

 Class myclass; if(isTimeForActivity1){ myclass = Activity1.class; }else if(isTimeForActivity2){ myclass = Activity2.class; } startActivity(new Intent(this, myclass)); finish(); 

Intente mirar la aplicación “OI Safe” que tiene una solución bien diseñada (no sé si el código también está bien diseñado, pero verá: p)