2011-03-27 13 views
11

¿Cuál es la mejor forma de detectar cuándo se ha lanzado una "Aplicación" de Android desde la pantalla de inicio/Historial?Android: detección del lanzamiento de la aplicación desde el hogar o la historia

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

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

Respuesta

14

¿Cuál es la mejor forma de detectar cuándo se ha iniciado una "Aplicación" Android desde la pantalla de inicio/Historial?

No puede, AFAIK.

Básicamente, lo que estoy tratando de lograr es obligar al usuario a acceder a determinadas pantallas cada vez que regresan a la aplicación (es decir, tienen acceso completo a todas las actividades una vez iniciada la sesión, pero esencialmente los quiero para volver a autenticarse cuando regresen 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 al startActivity() para iniciar su actividad de inicio de sesión (o haga clic 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 según 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.

+1

Gracias por su respuesta, lamentablemente esto es para un cliente, que requiere un nivel bastante alto de seguridad (los datos son bastante sensibles). No pensé que hubiera una forma de salir de mis búsquedas, y una sesión basada en el tiempo era exactamente a donde me dirigía. – Codz

+2

Y, una vez más, los clientes arruinan el día con un splash> _ <, tendrán que encontrar una solución alternativa. – Warpzit

+0

puede cerrar la sesión cuando la actividad se detiene, activar una bandera para cerrar la actividad, cerrar la actividad en pausa. – pojomx

0

tratar de ver la aplicación "OI Segura", que tiene una solución bien diseñada (no sé si el código está bien diseñado también, pero, usted se verá: p)

2

basta con crear una la actividad de tocón que no tiene una vista de contenido y inicia otras actividades al iniciar la aplicación

por ejemplo poner el siguiente en onCreate:

Class<?> myclass; 

if(isTimeForActivity1){ 
    myclass = Activity1.class; 
}else if(isTimeForActivity2){ 
    myclass = Activity2.class; 
} 

startActivity(new Intent(this, myclass)); 
finish(); 
12

¿Qué hay de

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

? Esto usa un simple Intent flag.

+0

¿Podría alguien comentar la validez de esta respuesta? ¿Tiene sentido para otros desarrolladores de Android más experimentados que yo? – marienke

+1

Puedes simplemente probarlo - funciona en todos nuestros dispositivos aquí. Si no, por favor infórmame. – bk138

+1

Esto no funciona para mí. –

Cuestiones relacionadas