Ocultar notificaciones persistentes para aplicaciones en segundo plano y superposiciones en Android O

Tutorial sobre cómo ocultar la notificación persistente en Android O que muestra cuando se está ejecutando una aplicación en segundo plano o cuando se muestra una superposición.

Actualización 25/08/17: Este tutorial ahora está obsoleto, ya que Google parchó el método que estamos usando 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 al respecto que puedes encontrar aquí.

Android O busca aportar mejoras importantes al sistema operativo Android que todos conocemos y amamos. Modo imagen en imagen para teléfonos, canales de notificación, selección inteligente de texto, servicios de autocompletar y, bajo el capó, muchos, 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 solucionar problemas con la duración y el rendimiento de la batería son las limitaciones del proceso en segundo plano. Sin entrar en demasiados detalles, las aplicaciones en Android O ya no se pueden reactivar desde su registro de manifiesto. receptores de transmisión implícitos y ya no pueden iniciar servicios en segundo plano sin pasar por Programador de trabajos. 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 aparentemente agrega 

otro Notificación persistente que le indica qué aplicaciones se están ejecutando. Esto también ocurre cuando una aplicación con el SISTEMA_ALERT_WINDOW permiso (como el popular Crepúsculo app) actualmente muestra una superposición.

Notificación persistente de Android O para aplicaciones en segundo plano y superpuestas. Créditos: Ben Schoon \\ 9to5Google

Aunque estas notificaciones están minimizadas 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 desactivar esta notificación en la versión final de Android O/Android 8.0. Sin embargo, si no lo hacen, hay es Todavía hay una manera de ocultar permanentemente la notificación de aplicaciones en segundo plano persistentes. Mostraré cómo hacerlo en una guía paso a paso, seguida de una explicación de cómo funciona, así como advertencias importantes.


Requisitos:

  • Android O
  1. Instale los controladores USB para su teléfono en particular si está en Windows (se pueden encontrar aquí).
  2. Descargar el binario ADB para su sistema operativo particular (ventanas, Mac, linux). Estos enlaces siempre apuntarán a la última versión del binario, por lo que no tendrás que buscar en la red la última versión.
  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. Busque el número de compilación y tóquelo 7 veces para habilitar el modo de desarrollador. Verás una ventana emergente una vez que esté habilitado.
  6. Regrese al menú principal de Configuración e ingrese a 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 el panel de notificaciones para cambiar el modo USB del modo "solo carga" al modo "transferencia de archivos (MTP)". Es posible que esto no sea 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 Mayús + clic derecho y luego seleccionando la opción "abrir símbolo del sistema aquí".
  10. Una vez que esté en el entorno del símbolo del sistema o de la 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 adb devices 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 por el estilo, pero mientras no vea un error, debería haber funcionado. ¡Ahora simplemente reinicia tu teléfono!

    Sí, me doy cuenta de que 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

Usando la interfaz de línea de comando oculta para App Ops, el sistema de administración de permisos de cara al usuario de Android, podemos restringir el permiso POST_NOTIFICATION del paquete "android". (Nota: lo estamos configurando para "ignorar" en lugar de "denegar" porque "denegar" podría causar algunos errores). Encontré este permiso mirando el código fuente relevante para Administrador de operaciones de aplicaciones, que enumera todos los permisos posibles que se pueden otorgar/revocar, muchos de los cuales no son accesibles en la configuración de Android. El paquete "android" en realidad se refiere al "Sistema Android", también conocido como framework-res.apk, que es responsable de la notificación persistente de la que estamos intentando deshacernos.

Básicamente, al revocar 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 ya no se mostrarán otras notificaciones que pueda publicar. 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 esta es una medida bastante drástica de nuestra parte, actualmente es la única forma de ocultar esta notificación. desde rootear su teléfono y modificar el marco en sí, lo cual obviamente es algo que no muchos usuarios están dispuestos 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 mejor aún, eliminarla por completo. Es comprensible que Google quiera mejorar la experiencia del usuario notificándoles cuando una aplicación se ejecuta en segundo plano que Puede que el usuario no lo sepa, pero el método que eligió es molesto para aquellos de nosotros que sabemos qué pasa con cada aplicación que estamos. usando.