¿Cómo puedo evitar que 'am' comience mi actividad?

4

Tengo una aplicación para Android y tiene 3 actividades; A, G y B. Cuando la aplicación se inicia, los usuarios ven la Actividad A. Si el usuario desea navegar a la actividad B, la aplicación inicia la actividad G y solicita una contraseña. Si la contraseña es verdadera, el usuario se dirige a la Actividad B, si no regresa a la actividad A. Ninguna de las actividades se exporta. El problema está en los dispositivos arraigados, un usuario puede iniciar la actividad B desde la línea de comandos usando

am start -n package.name/package.name.B

comando. ¿Cómo puedo prevenir esto?

    
pregunta mk_ 25.11.2015 - 16:00
fuente

2 respuestas

15

El control de seguridad real en la actividad B o hacer que G envíe algún tipo de token a B en la Intención.

El token puede ser cualquier dato aleatorio generado en tiempo de ejecución. Como G y B comparten el mismo proceso, pueden acceder fácilmente a él, pero otros procesos no pueden (no sin depuración manual).

Pero tenga en cuenta que todo esto solo dificulta que los usuarios utilicen su aplicación sin la contraseña. El usuario controla el binario y la memoria, por lo que puede omitir cualquier protección que ponga.

    
respondido por el billc.cn 25.11.2015 - 16:23
fuente
12

No puede evitar que AM se ejecute en un teléfono rooteado. Mi enfoque para evitar que la Actividad B se ejecute por separado sería escribir la Actividad B para que falle, a menos que pase un código de la actividad A o G, según la actividad que lo inicie.

    
respondido por el GdD 25.11.2015 - 16:04
fuente

Lea otras preguntas en las etiquetas