He notado que las aplicaciones (como Google Contacts Sync) que se han deshabilitado usando el administrador de aplicaciones de Android (KitKat) aún se muestran como ejecutándose cuando se usan herramientas de observación de procesos. Esto es así incluso después de reiniciar el dispositivo.
¿Por qué las aplicaciones deshabilitadas aún se están ejecutando? ¿Existe una forma efectiva (y segura) de desactivarlos?
Las soluciones que requieren privilegios de root son aceptables.
(Tenga en cuenta que para el ejemplo específico anterior, puede decirle a Android que no sincronice sus contactos, pero aún ejecuta el proceso de sincronización de contactos de Google. Pero no nos detengamos en ese ejemplo... es solo un ejemplo).
Su Android no necesita tener acceso de root para deshabilitar realmente una aplicación, si tiene la versión 4.4.x o superior. Todo lo que necesita es la configuración de adb en la PC y la depuración USB habilitada en un dispositivo no rooteado, o una aplicación de emulador de terminal para un dispositivo rooteado (también puede usar adb).
Si comprueba el pm
uso de Package Manager ( ), verá
bloque pm [--user USER_ID] PACKAGE_OR_COMPONENT") pm desbloquear [--user USER_ID] PACKAGE_OR_COMPONENT")
Para Lollipop, sería
pm hide [--user USER_ID] PACKAGE_OR_COMPONENT") pm mostrar [--user USER_ID] PACKAGE_OR_COMPONENT")
Para bloquear u ocultar un paquete (es seguro), simplemente haga
pm block PACKAGE # for KitKat
pm hide PACKAGE # for Lollipop
Para desbloquear o mostrar el paquete, haga
pm unblock PACKAGE #for KitKat
pm unhide PACKAGE # for Lollipop
PACKAGE
→ nombre del paquete de una aplicación. Para saber el nombre del paquete de una aplicación:
Agregue adb shell
antes de cada comando para ejecutarlos desde la PC.
La función detrás de ocultar tiene el siguiente comentario dentro del código fuente
Pone el paquete en un estado oculto, que es casi como un estado desinstalado, lo que hace que el paquete no esté disponible, pero no elimina los datos ni el archivo del paquete real. La aplicación se puede mostrar restableciendo el estado oculto o instalándola
Se hacen comentarios similares para el bloque aquí .
Para verificar el reclamo, puede usar algunos servicios del sistema como meminfo
, procstats
y activity
usar la herramienta dumpsys o incluso enumerar todos los procesos usando ps
. No encontrará una presencia activa de la aplicación bloqueada/oculta.
Lo mismo ocurre con muchas aplicaciones del sistema deshabilitadas mediante GUI o pm disable
, pero no para todas las aplicaciones , ya que incluso una aplicación deshabilitada puede recibir transmisiones para las que se ha registrado, lo que solo se puede hacer si está cargada en la memoria 1 . Sin embargo, una aplicación deshabilitada no puede actuar por sí sola, ni puede ser ejecutada por ninguna otra aplicación.
He discutido algunas de las diferencias entre ocultar / bloquear y deshabilitar en mi pregunta pm hide VS pm disabled: la crisis de identidad . Solo proporciona información complementaria a esta respuesta, por lo que puede omitirla.
EDITAR:
Parece que la técnica no funciona para todas las aplicaciones en Android KitKat. En ese caso, simplemente revoque el permiso de lectura del APK de la aplicación o elimine la extensión .APK del nombre de archivo de la aplicación (este último sugerido por Jaskaranbir una vez), seguido de un reinicio suave/completo. Esto es lo mismo que eliminar una aplicación del sistema, con la única diferencia de que todos los archivos permanecerán en su lugar.
Ambos pasos se pueden ejecutar usando cualquier aplicación de administrador de archivos raíz. La forma de línea de comando es:
adb shell su -c 'chmod 000 /data/app/PACKAGE*' # 000 means no read-write-executable permission to user,group and others.
adb shell su -c 'mv /data/app/PACKAGE* /data/app/PACKAGE' # doing renaming by moving the file
adb reboot
1: Falta de evidencia técnica para respaldar el hecho
pm block/hide
así que déjela intacta./data/system/users/0/package-restrictions.xml
, buscar <pkg name="YOUR_PACKAGE"
). En resumen, es seguro aplicar o no el comando bloquear/ocultar en una aplicación deshabilitada.adb shell su -c "chmod 111 /system/app/SystemUI.apk"
. 111 significa establecer solo permisos ejecutables para propietario, grupo y otros. Reinicie y la aplicación no estará en el sistema. También puede configurarlo 000
.
Árbol Gigante
RockPaperLz- Máscara o ataúd
Árbol Gigante
RockPaperLz- Máscara o ataúd
RockPaperLz- Máscara o ataúd
izzy
Señor del Fuego
RockPaperLz- Máscara o ataúd
Señor del Fuego
block/hide
), lo que me hace preguntarme qué está causando que la aplicación se cargue ahora. Otra cosa es que mientras estuvo cargado en la memoria se puede observar su ausencia superficial por falta de fondo, temas, barra de estado y más. Tal vez, una nueva pregunta se puede forjar a partir de esto.izzy
.apk
atrás los datos", por lo que la aplicación queda "completamente desregistrada e invisible para todo menos para el administrador de archivos", por lo que otras aplicaciones ya no pueden llamar a sus intenciones como pueden. no encontrarlos.RockPaperLz- Máscara o ataúd
izzy