¿Hay alguna forma de deshabilitar las aplicaciones de inicio automático en el momento del arranque? Necesito deshabilitar algunos de ellos (no todos) como Facebook, etc. para obtener un tiempo de arranque más rápido. Estoy preguntando cómo hacer esto en Android 9.0.
Sin entrar en detalles sobre si uno debe o no detener el inicio automático de las aplicaciones, y cuáles podrían ser las consecuencias como se discutió en muchas otras respuestas, aquí están mis soluciones simples que pueden funcionar sin aplicaciones de terceros, al menos en Android Pie.
Las aplicaciones suelen BroadcastRceivers
escuchar la transmisión ACTION_BOOT_COMPLETED para que puedan ejecutarse en el arranque. El receptor de transmisión es un componente de la aplicación que se puede desactivar con privilegios de root.
Usando el Administrador de paquetes , enumere todos los receptores de transmisión que escuchan BOOT_COMPLETED:
~# pm query-receivers --components -a android.intent.action.BOOT_COMPLETED
Dará una lista de receptores de transmisión en formato package_name/component_name
. Ver dumpsys activity broadcast-stats
y dumpsys activity broadcasts
para más detalles.
Ahora para deshabilitar un componente:
~# pm disable <package/component>
Hay aplicaciones como Autostarts
( com.elsdoerfer.android.autostarts ) y SD Maid
( eu.thedarken.sdm ) que pueden hacer lo mismo por usted. El archivo /data/system/users/0/package-restrictions.xml
también se puede editar directamente para deshabilitar aplicaciones o sus componentes, pero no se recomienda.
Es posible deshabilitar varios receptores de transmisión de una aplicación, y un solo receptor también puede escuchar varios tipos de eventos de transmisión .
Para recibir android.intent.action.BOOT_COMPLETED
, las aplicaciones necesitan android.permission.RECEIVE_BOOT_COMPLETED , que es un permiso normal y, por lo tanto, el usuario no puede revocarlo.
Sin embargo, hay un marco de administración de permisos ocultoAppOps
, cuyo nombre proporciona un control un poco más detallado de las operaciones (similares a permisos). OP_BOOT_COMPLETED es uno de esos, pero no es parte de AOSP, solo lo agregan algunas ROM personalizadas como LineageOS. Si está en una de esas ROM, puede controlar el comportamiento de inicio automático a través de adb shell
:
~$ appops set <package> BOOT_COMPLETED deny
Ahora la aplicación no podrá recibir transmisiones BOOT_COMPLETED. Hay aplicaciones como App Ops
( rikka.appops ) que pueden hacer lo mismo por ti. Algunas ROM personalizadas tienen interfaces integradas para AppOps con diferentes nombres como Privacy Guard , AutoStart Manager , etc.
Tenga en cuenta que AppOps :
generalmente no está destinado a desarrolladores de aplicaciones de terceros; la mayoría de las funciones solo están disponibles para las aplicaciones del sistema
Por lo tanto, su uso sin root puede no estar permitido o volverse más difícil en las próximas versiones de Android.
Ambos métodos anteriores pueden evitar que las aplicaciones se inicien solo en el arranque. Una aplicación también puede escuchar algunos otros eventos de transmisión y puede seguir reiniciando si se cancela, o ejecutarse en segundo plano continuamente (como un servicio) si está diseñado para ser así. Ver dumpsys activity services
para más detalles.
Un enfoque ligeramente diferente sería evitar que las aplicaciones se ejecuten en segundo plano usando OP_RUN_IN_BACKGROUND (introducido en Nougat) y/o RUN_ANY_IN_BACKGROUND
(introducido en Pie) que son parte de AOSP:
~$ appops set <package> RUN_IN_BACKGROUND deny
No tienen un permiso de manifiesto equivalente, pero hay un permiso experimental con el mismo nombre.
pm query-receivers
supone que funciona? en mi Android 7 obtengo: "Error: comando desconocido 'query-receivers'"query-intent-receivers
.Algunos dispositivos requieren acceso de raíz para administrar los permisos de inicio automático... Sin embargo, Android 5.1 lo permite a través de la configuración de Inicio automático en Seguridad.
Esta opción debería estar disponible en cualquier sistema con AppOpps
También si no está en Android con esta configuración
Configuración abierta
Abrir aplicaciones
Abra la aplicación deseada
Seleccionar permisos
Deshabilitar el permiso de inicio automático
Roberto