Cómo ocultar la notificación persistente para aplicaciones en segundo plano en Android O

Actualización 25/8/17: este tutorial ahora está obsoleto, ya que Google parchó el método que estamos utilizando para ocultar la notificación persistente en segundo plano. Sin embargo, hemos descubierto otra solución a este problema y hemos escrito un breve tutorial sobre el mismo que puede encontrar aquí.

Android O está buscando aportar mejoras importantes al sistema operativo Android que todos conocemos y amamos. Modo de imagen en imagen para teléfonos, canales de notificación, selección de texto inteligente, servicios de autocompletar y muchos cambios para mejorar la duración, el rendimiento y la seguridad de la batería. Una característica que se supone que ayuda a los usuarios a resolver problemas con la duración y el rendimiento de la batería son las limitaciones del proceso de fondo. Sin entrar en demasiados detalles, las aplicaciones en Android O ya no se pueden despertar desde sus receptores de transmisión implícitos registrados de manifiesto y ya no pueden iniciar servicios en segundo plano sin pasar por JobScheduler. Si una aplicación desea iniciar un servicio en segundo plano, debe informar explícitamente al usuario que lo está haciendo mediante la publicación de una notificación. Sin embargo, cuando una aplicación se ejecuta en segundo plano, Android O ahora parece agregar otra notificación persistente que le dice qué aplicaciones se están ejecutando. Esto también ocurre cuando una aplicación con el permiso SYSTEM_ALERT_WINDOW (como la popular aplicación Twilight) muestra actualmente una superposición.

Android O Notificación persistente para aplicaciones de fondo y superposición. Créditos: Ben Schoon \\ 9to5Google

Aunque estas notificaciones se minimizan de forma predeterminada, el usuario no puede descartarlas ni bloquearlas permanentemente en Configuración. Este comportamiento es muy molesto para muchos usuarios, y espero seriamente que Google nos brinde una forma de deshabilitar esta notificación en la versión final de Android O / Android 8.0. Sin embargo, si no lo hacen, todavía hay una manera de ocultar permanentemente la notificación persistente de aplicaciones en segundo plano . Mostraré cómo hacerlo en una guía paso a paso, seguida de una explicación de cómo funciona, así como advertencias importantes.


Ocultar la notificación persistente en Android O

Requisitos:

  • Android O
  1. Instale los controladores USB para su teléfono en particular si está en Windows (se pueden encontrar aquí).
  2. Descargue el binario ADB para su sistema operativo particular (Windows, Mac, Linux). Estos enlaces siempre apuntarán a la última versión del binario, por lo que no tendrá que buscar en la red la última.
  3. Extraiga el contenido del archivo ZIP que descargó en una carpeta de fácil acceso en su PC (como en la carpeta Descargas).
  4. Vaya a la aplicación Configuración en su teléfono y toque la opción "Acerca del teléfono".
  5. Encuentra el número de compilación y tócalo 7 veces para habilitar el modo de desarrollador. Verás una ventana emergente una vez que esté habilitada.
  6. Vuelva al menú principal de Configuración e ingrese Opciones de desarrollador para que pueda habilitar el Modo de depuración USB.

  7. Conecte su teléfono a la PC y deslice hacia abajo su panel de notificaciones para cambiar el modo USB de "carga solamente" al modo "transferencia de archivos (MTP)". Esto puede no ser necesario para su teléfono.
  8. En su PC, busque el directorio donde extrajo el binario ADB.

  9. Inicie un símbolo del sistema / terminal en este directorio ADB. Para los usuarios de Windows, esto se puede hacer presionando Shift + clic derecho y luego seleccionando la opción "abrir símbolo del sistema aquí".

  10. Una vez que esté en el símbolo del sistema o el entorno de Terminal, ingrese el siguiente comando: adb devices
  11. Esto iniciará el demonio ADB. Si es la primera vez que ejecuta ADB, también verá un mensaje en su teléfono pidiéndole que autorice una conexión.

  12. Ahora vuelva a ejecutar el comando de dispositivos adb desde el paso 10, y el símbolo del sistema / terminal imprimirá el número de serie de su dispositivo. Si es así, entonces estás listo para seguir adelante. De lo contrario, es probable que los controladores USB no estén instalados correctamente.
  13. Regrese al símbolo del sistema e ingrese el siguiente comando: adb shell
  14. Ahora ejecute el siguiente comando: cmd appops set android POST_NOTIFICATION ignore

  15. No recibirá un mensaje de éxito ni nada, pero siempre y cuando no vea un error, debería haber funcionado. ¡Ahora solo reinicie su teléfono!

    Antes: notificación persistente que se muestra

    Después: Notificación persistente oculta

    Sí, me doy cuenta de que estas son imágenes de la pantalla de un teléfono en lugar de capturas de pantalla. Yo no tengo un dispositivo compatible con Android O, así que le pedí a TK que me enviara imágenes.

  16. Si desea revertir este comando, ingrese esto en el símbolo del sistema: cmd appops set android POST_NOTIFICATION allow

Cómo funciona

Al usar la interfaz de línea de comando oculta para App Ops, el sistema de administración de permisos de Android para usuarios, podemos restringir el permiso POST_NOTIFICATION del paquete "android". (Nota: lo estamos configurando para "ignorar" en lugar de "negar" porque "negar" podría causar algunos errores). Encontré este permiso mirando el código fuente relevante para AppOpsManager, que enumera todos los permisos posibles que pueden ser concedido / revocado, muchos de los cuales no son accesibles en la configuración de Android. El paquete "android" en realidad se refiere al "Sistema Android" AKA framework-res.apk, que es responsable de la notificación persistente de la que estamos tratando de deshacernos.

Al revocar esencialmente el permiso POST_NOTIFICATION del sistema Android, ¡ya no puede mostrar una notificación! Suena bastante simple, ¿verdad? Desafortunadamente, hay una advertencia a tener en cuenta. El "Sistema Android" es responsable de algo más que esta notificación, por lo que cualquier otra notificación que pueda publicar ya no se mostrará. Esto puede incluir la notificación del modo USB (que aún se puede cambiar a través de la configuración en Opciones de desarrollador), así como algunas otras cosas.

Si bien es una medida bastante drástica de nuestra parte, actualmente es la única forma de ocultar esta notificación además de rootear su teléfono y modificar el marco en sí, lo que obviamente es algo que no muchos usuarios desean o no pueden hacer. Espero sinceramente que Google ofrezca una forma de ocultar esta notificación en una versión futura de Android O, o incluso mejor eliminar esta notificación por completo. Comprensiblemente, Google quiere mejorar la experiencia del usuario notificando a los usuarios cuando una aplicación se está ejecutando en segundo plano que el usuario puede no conocer, pero el método que eligieron es molesto para aquellos de nosotros que sabemos qué pasa con cada aplicación que estamos utilizando.