Estoy haciendo una aplicación de control parental / responsabilidad para Android. Consiste en un servicio de monitoreo que se ejecuta en segundo plano y se inicia cuando se inicia el teléfono.
Desafortunadamente, descubrí que cuando Android se inicia en "Modo seguro", los servicios no se inician automáticamente, y debido a esto, mi aplicación tiene una falla grave.
Mientras está en modo seguro, la web y otras aplicaciones se pueden iniciar sin que se ejecute mi servicio de monitoreo.
Pensé que si no es posible monitorear la actividad de la aplicación mientras está en modo seguro, tal vez al menos podría hacer que mi aplicación detecte si el teléfono estaba anteriormente en modo seguro. Entonces, ¿podría alertar al padre o al socio responsable?
¿Android mantiene algún registro de esto? ¿O algún registro de arranque en general? Estoy muy abierto a sugerencias y alternativas.
Respuestas:
Creo que te has sorprendido, en resumen, ¡nada que puedas hacer!
Eche un vistazo a esta fuente que explica por qué, específicamente en esta sección:
Partición del sistema y modo seguro
Las palabras clave están libres de software de terceros
Editar:
Cuando se inicia Android, mantiene un caché de
logcat
, en un búfer temporal que se encuentra reservado en/dev/log
. Ese búfer se recicla cuando alcanza el umbral, obviamente, cuanto mayor es el umbral, más lento se vuelve Android con el envío continuo de correo no deseado en el búfer logcat, por lo tanto, se mantiene al mínimo: iirc, es alrededor de 64K:Fuente:
system/core/logcat/logcat.cpp
No pregunte cuántas líneas pueden ser, en cuanto a cada aplicación, es diferente. ¡No solo eso, el logcat desaparece al reiniciar!
fuente
/dev/null
al reiniciar como "business as usual" ... solo diciendo ... :) ¡Y gracias por el voto negativo!No es la mejor respuesta, pero tal vez la información sea algo útil.
El único método que conozco que contiene un registro producido por el sistema después de un reinicio es
/proc/last_kmsg
.Si el kernel mantiene o no este archivo de registro después de un reinicio, depende de la configuración proporcionada durante la compilación del kernel.
Mi experiencia ha demostrado que algunos dispositivos de stock (HTC) tienen este registro habilitado y otros no. No he visto un patrón consistente.
fuente
adb shell cp /sys/fs/pstore/console-ramoops /data/media/0/console-ramoops.`date "+%Y_%m_%d_%H_%M_%S"`.log
funciona con TWRP en OP3 con LineageOS basado en Android 8