6 votos

Desactivar el inicio automático en el arranque y restringir la ejecución en segundo plano

¿Hay alguna forma de desactivar las aplicaciones de inicio automático en el arranque? Necesito desactivar algunas de ellas (no todas) como Facebook, etc para conseguir un tiempo de arranque más rápido. Estoy preguntando cómo hacer esto en Android 9.0.

0 votos

Impedir que una aplicación se inicie en el arranque requiere permisos Root: stackoverflow.com/questions/9715214/

14voto

Jack Wade Puntos 231

Sin entrar en los detalles de si se debe o no dejar de autoarrancar aplicaciones, y cuáles podrían ser las consecuencias como se ha comentado en un montón de otras respuestas, aquí están mis soluciones simples que pueden funcionar sin ninguna aplicación de terceros, al menos en Android Pie.

Solución de root:

Uso de aplicaciones BroadcastRceivers para escuchar la emisión ACTION_BOOT_COMPLETED para que puedan funcionar en el arranque. El receptor de la transmisión es un componente de la aplicación que se puede desactivar con privilegios de Root.

Utilizando Gestor de paquetes lista todos los receptores de difusión que escuchan BOOT_COMPLETED:

~# pm query-receivers --components -a android.intent.action.BOOT_COMPLETED

Dará una lista de receptores de emisión en formato package_name/component_name . Ver dumpsys activity broadcast-stats y dumpsys activity broadcasts para más detalles.

Ahora para desactivar un componente:

~# pm disable <package/component>

Hay aplicaciones como Autostarts ( com.elsdoerfer.Android.autostarts ) y SD Maid ( eu.thedarken.sdm ) que puede hacer lo mismo por ti. Archivo /data/system/users/0/package-restrictions.xml también se puede editar directamente para desactivar las aplicaciones o sus componentes, pero no se recomienda.
Es posible desactivar varios receptores de emisión de una aplicación, y un solo receptor también puede escuchar varios tipos de eventos de difusión .

SOLUCIÓN NO root: (no universal)

Para recibir android.intent.action.BOOT_COMPLETED Las aplicaciones necesitan Android.permission.RECEIVE_BOOT_COMPLETED que es un permiso normal y por lo tanto no puede ser revocado por el usuario.

Sin embargo, hay un oculto marco de gestión de permisos, denominado AppOps que proporciona un control algo más fino de las operaciones (tipo permiso). OP_BOOT_COMPLETED es uno de ellos, pero no forma parte de AOSP, sólo lo añaden algunas ROMs personalizadas como LineageOS. Si estás en una de esas ROMs, puedes controlar el comportamiento del autoarranque a través de adb shell :

~$ appops set <package> BOOT_COMPLETED deny

Ahora la aplicación no podrá recibir la emisión BOOT_COMPLETED. Hay aplicaciones como App Ops ( rikka.appops ) que puede hacer lo mismo por ti. Algunas ROMs personalizadas tienen incorporados front-ends para AppOps con diferentes nombres como Protección de la intimidad , Gestor de arranque automático etc.

Tenga en cuenta que AppOps :

no está pensado en general para los desarrolladores de aplicaciones de terceros; la mayoría de las funciones sólo están disponibles para las aplicaciones del sistema

Así que su uso sin Root puede ser desautorizado o ser más difícil en las próximas versiones de Android.


Los dos métodos anteriores pueden impedir que las aplicaciones se inicien sólo en el arranque. Una aplicación también puede escuchar otros eventos de difusión y puede seguir reiniciándose si se mata, o ejecutarse en segundo plano continuamente (como un servicio) si está diseñada para ello. Ver dumpsys activity services para más detalles.

Un enfoque ligeramente diferente sería impedir que las aplicaciones se ejecuten en segundo plano utilizando OP_RUN_IN_BACKGROUND (introducido en Nougat) y/o RUN_ANY_IN_BACKGROUND (introducido en Pie) que forman parte de AOSP:

~$ appops set <package> RUN_IN_BACKGROUND deny

No tienen un permiso manifiesto equivalente, pero hay un permiso experimental con el mismo nombre.

2 votos

Esta pregunta fue marcada como duplicada pero otras preguntas no tienen buenas respuestas como la tuya. Gracias. Creo que AppOps es una solución fácil. Me olvidé de añadir en la pregunta, he rooteado mi teléfono.

0 votos

@QkiZ sí, siempre que tu ROM lo soporte. O puedes optar por la opción Root.

0 votos

Ya que cuando es pm query-receivers ¿se supone que funciona? en mi Android 7 obtengo: "Error: comando desconocido 'query-receivers'"

0voto

user157947 Puntos 51

Algunos dispositivos requieren acceso Root para gestionar los permisos de inicio automático... Sin embargo, Android 5.1 permite esto a través de la configuración de inicio automático en la seguridad.

  • Abra Configuración > Seguridad
    security

  • Abrir la configuración de inicio automático
    auto

  • Desactivar el inicio automático de la aplicación
    disable

Esta opción debería estar disponible en cualquier sistema con AppOpps

También si no está en Android con estos ajustes

  • Abrir la configuración

  • Aplicaciones abiertas

  • Abra la aplicación deseada

  • Seleccione los permisos

  • Desactivar el permiso de arranque automático

0 votos

¿Qué dispositivo utilizas? He utilizado stock ROM es Nexus 6 (Android 5.x - 7.x) y OnePlus 6 (Android 8.1) , y nunca me encontré con esa opción.

0 votos

@Firelord es común en las ROMs personalizadas tener un gestor de AppOps incorporado. No es un AOSP de stock.

0 votos

No stock ROM... No personalizada... AppOpps es una parte de Stock Androids

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X