Deshabilite el inicio automático en el arranque y restrinja la ejecución en segundo plano [duplicado]

¿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.

Evitar que una aplicación se inicie al inicio requiere permisos de root: stackoverflow.com/questions/9715214/…

Respuestas (2)

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.

SOLUCIÓN RAÍZ:

Las aplicaciones suelen BroadcastRceiversescuchar 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-statsy dumpsys activity broadcastspara 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.xmltambié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 .

SOLUCIÓN NO RAÍZ: (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, 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 servicespara 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.

Esta pregunta se marcó como duplicada, pero otras preguntas no tienen buenas respuestas como la suya. Gracias. Creo que AppOps es una solución fácil. Olvidé agregar una pregunta, he rooteado mi teléfono.
@QkiZ sí, siempre que su ROM lo admita. O puede optar por la opción raíz.
desde cuando se pm query-receiverssupone que funciona? en mi Android 7 obtengo: "Error: comando desconocido 'query-receivers'"
@FrederickNord parece que esto se agregó en Nougat: android.googlesource.com/platform/frameworks/base/+/… . Prueba también query-intent-receivers.
Dice "error: cadena de operación desconocida: RUN_IN_BACKGROUND". También probé con RUN_ANY_IN_BACKGROUND y OP_RUN_IN_BACKGROUND. Editar: mi versión no la tiene android.googlesource.com/platform/frameworks/base/+/refs/tags/…
@VeganEye probablemente no leyó la respuesta: "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 )"
Debe agregar esta respuesta a las preguntas "duplicadas" para una mayor visibilidad, es mejor que todas las demás respuestas allí.
Puedo confirmar que la opción raíz funciona en Android 13. Deshabilité los receptores en la aplicación AppControl de SD Maid para Spotify y funcionó. Tuve que restablecer la aplicación de fábrica para que todo funcionara sin problemas, pero eso podría ser solo un problema de almacenamiento de Spotify.

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.

  • Abra Configuración > Seguridad
    seguridad

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

  • Deshabilite la aplicación desde el inicio automático
    desactivar

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

Qué dispositivo estás usando? He usado la ROM de stock Nexus 6 (Android 5.x - 7.x) y OnePlus 6 (Android 8.1), y nunca encontré esa opción.
@Firelord es común en las ROM personalizadas tener un administrador de AppOps incorporado. No es un AOSP de valores.
Sin stock ROM... No personalizado... AppOpps es parte de Stock Androids
Sí, appops es parte de AOSP, pero esa opción en la captura de pantalla no está disponible. A eso me refería. ¿Qué dispositivo y ROM estás usando?
AppOps es parte de AOSP, no de los administradores de AppOps (GUI).
@Firelord está construido con muchas versiones de CM, LineageOS, AEX, RR e incluso OmniRom si no recuerdo mal.
Estoy usando stock Android 5.0.1 en ZTE Blade L4 Pro
@Zillinium, sería útil si proporciona un enlace a AOSP donde existe el código fuente de la administración de inicio automático .
No se llama administración de inicio automático... Es administración de permisos... El inicio automático requiere el siguiente permiso... "android.permission.RECEIVE_BOOT_COMPLETED" .. ... Usted detiene o administra el inicio automático deshabilitando la recepción Arranque Permiso completado para esa aplicación... Consulte A... Gestión de permisos...