Tu Android no necesita tener acceso Root para realmente desactivar una aplicación, si tienes la versión 4.4.x o superior. Todo lo que necesitas es adb configuración en el PC y Depuración USB activada en un dispositivo no rooteado, o una aplicación de emulador de terminal para un dispositivo rooteado (también puedes usar adb).
Si compruebas que el gestor de paquetes ( pm
), se vería
pm block \[--user USER\_ID\] PACKAGE\_OR\_COMPONENT")
pm unblock \[--user USER\_ID\] PACKAGE\_OR\_COMPONENT")
Para Lollipop, sería
pm hide \[--user USER\_ID\] PACKAGE\_OR\_COMPONENT")
pm unhide \[--user USER\_ID\] PACKAGE\_OR\_COMPONENT")
Para bloquear u ocultar un paquete (es seguro), basta con hacer
pm block PACKAGE # for KitKat
pm hide PACKAGE # for Lollipop
Para desbloquear o desocultar el paquete, haga lo siguiente
pm unblock PACKAGE #for KitKat
pm unhide PACKAGE # for Lollipop
PACKAGE
→ nombre del paquete de una aplicación. Para conocer el nombre del paquete de una aplicación:
Añada adb shell
antes de la propia orden para ejecutarlos desde el 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 de desinstalación, haciendo que el paquete no esté disponible, pero no elimina los datos o el archivo real del paquete. La aplicación se puede desocultar restableciendo el estado oculto o instalándola
Se hacen comentarios similares para bloque aquí .
Para verificar la reclamación, puede utilizar algunos servicios del sistema como meminfo
, procstats
y activity
utilizando el dumpsys o incluso listar todos los procesos utilizando ps
. No encontrarás 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 desactivada puede recibir difunde que ha registrado, lo que sólo puede hacerse si se carga en la memoria 1 . Sin embargo, una aplicación desactivada no puede actuar por sí misma, ni puede ser ejecutada por ninguna otra aplicación.
He argumentado algunas de las diferencias entre ocultar / bloque y desactivar sobre mi pregunta pm hide VS pm disable -- la crisis de identidad . Sólo 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 del archivo de la aplicación (esto último sugerido por Jaskaranbir una vez), seguido de un reinicio suave/completo. Esto es lo mismo que borrar una aplicación del sistema, con la única diferencia de que todos los archivos permanecerán en su lugar.
Ambos pasos pueden ser ejecutados utilizando cualquier aplicación de gestión de archivos Root. La forma de la línea de comandos 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 pruebas técnicas que respalden el hecho
0 votos
Justo al lado del botón "Desactivar" hay un botón "Forzar parada". Púlsalo y el proceso debería terminar y no iniciarse más.
0 votos
@GiantTree Gracias. Después de un reinicio, ¿no se iniciará de nuevo?
4 votos
En tu caso sí, porque una app del sistema ha llamado explícitamente a un servicio exportado de ese paquete y la única forma de matar de forma fiable ese proceso (y cualquier otro) es matándolo activamente usando Greenify, Amplify (requiere Xposed) o apps similares. Nota: esto no debería ocurrir y debería considerarse un error, porque el PackageManager tiene la tarea de no permitir que se ejecute una app deshabilitada.
0 votos
Gracias. Esto es gran información. He actualizado la pregunta para reflejar que las soluciones Root son aceptables. ¿Puedo utilizar una herramienta como MyAndroidTools para desactivar manualmente todos los servicios de las aplicaciones desactivadas?
0 votos
@Firelord Gracias. ¿Funciona el hide en KitKat o se introdujo en Lollipop? ¿Se puede ejecutar el comando hide directamente desde el dispositivo, o requiere una conexión adb externa? Después de ejecutar ese comando, ¿cuál es el comando para revertirlo, si es necesario?
0 votos
@Firelord ¿te importaría recopilar tus comentarios en una respuesta? Aunque la pregunta se refiere al "por qué", creo que el "cómo prevenir" era la verdadera pregunta (para el "por qué": las aplicaciones deshabilitadas todavía pueden tener sus intentos de llamada - lo que ocurre con bastante frecuencia para las aplicaciones centrales de Google. Según tu investigación (enlazada), esto ya no debería aplicarse una vez que la aplicación fue bloqueada/ocultada).
0 votos
Si tiene éxito usando mi respuesta, por favor hágamelo saber ya que he probado mi solución sólo en ROMs Lollipop.
0 votos
@Izzy y Firelord Preguntando esto para aprender más: ¿Utilizar una herramienta como MyAndroidTools para desactivar todos los servicios y receptores de la app sería otra solución efectiva?
1 votos
Bueno, en ese sentido, he desactivado todos los servicios, receptores, actividades y los proveedores de contenido, así como desactivar la aplicación SystemUI. He reiniciado el dispositivo y adivina lo que la aplicación todavía se cargó en la memoria (tal no es el caso con pm
block/hide
) lo que me hace preguntarme qué es lo que hace que se cargue la aplicación ahora. Otra cosa es que mientras estaba cargada en la memoria se pueda observar su ausencia superficial por falta de fondo, temas, barra de estado y demás. Tal vez, se pueda forjar una nueva pregunta a partir de esto.1 votos
@Firelord Supongo que es lo que señalé más arriba: si desactivar una aplicación simplemente se "marca como desactivada" (y no se muestra en el lanzador, etc.), pero sigue registrada en el sistema (gestor de paquetes), por lo que otras aplicaciones pueden encontrarla y llamar a sus intentos. Parece que ocultar/bloquear es más bien comparable con una "desinstalación que deja
.apk
y datos", por lo que la aplicación queda "completamente desregistrada e invisible para todo, excepto para el gestor de archivos", por lo que otras aplicaciones ya no son capaces de llamar a sus intentos, ya que no pueden encontrarlos.0 votos
@Izzy Excepto que el bloqueo aparentemente no funciona correctamente en KitKat. :-(
0 votos
@RockPaperLizard y esconderse no funciona en absoluto. Bueno, la perdición de KK parece que no se limita a lidiar con su tarjeta SD. Lo siento por eso. Pero estaba "hablando en general" ;)