Android O coupe les applications qui se superposent au-dessus de la barre d'état

Les applications concernées incluent Status, Twilight et Cool Tools parmi d'autres

Le filet de publications décrivant les nouvelles fonctionnalités offertes aux utilisateurs dans Android O commence à ralentir, maintenant que les utilisateurs disposent de plusieurs semaines pour tester le logiciel sur leur appareil. Cependant, il y a beaucoup, beaucoup de changements effectués sous le capot qui sont lentement découverts. L'autre jour, nous avons publié un article sur l'un de ces changements concernant les appareils Nexus et Pixel sous Android O adoptant SDCardFS. Mais aujourd'hui, nous aimerions discuter d'un changement qui affectera les développeurs de certaines applications, en particulier celles qui se superposent au-dessus de la barre d'état . Ces applications semblent être cassées dans l'Android Developer Developer Preview, ce que vous pourriez à première vue considérer comme un simple bug, mais en approfondissant la documentation de référence, cela pourrait être un changement prévu par Google.


Incrustations de la barre d'état Android O Breaks

L'une de mes choses préférées à propos d'Android est sa personnalisation. Les utilisateurs enracinés ou exécutant des ROM personnalisées peuvent thématiser leurs barres d'état système de manière native, sans restrictions, mais si votre appareil n'est pas enraciné, vous disposez de moins d'options. Heureusement, de nombreuses applications sur le Google Play Store vous permettent de modifier l'apparence de la barre d'état à un niveau élémentaire. Ceci est possible grâce à une combinaison astucieuse de Windows superposé système pour afficher une barre d'état personnalisée par rapport à celle existante, de Notification Listeners pour afficher les notifications et, éventuellement, d'un service d'accessibilité permettant de colorer la barre d'état personnalisée de manière contextuelle.

“Status” sur Android Nougat

«Barre d'état des matériaux» sur Android Nougat

Les deux captures d'écran ci-dessus montrent à quoi ressemblerait ma barre de notification lors de l'utilisation de l'une des nombreuses applications de superposition de barre d'état disponibles sur le Play Store. Ces captures d'écran ont été prises sur un Huawei Mate 9 non raciné fonctionnant sous EMUI 5.0. Pour ceux d'entre vous qui ne sont pas familiers avec EMUI, la barre d'état ne ressemble en rien aux captures d'écran ci-dessus. Au lieu de cela, cela ressemble à ceci:

Si l'apparence de votre barre d'état des stocks ne vous dérange pas, les applications telles que Statut ou Barre d'état des matériaux sont une aubaine. Mais si, ou lorsque votre appareil met à jour Android O, ces applications risquent de ne plus fonctionner. Voici à quoi ressemblent ces deux applications sur un Google Pixel exécutant l’aperçu pour développeurs Android O:

“Status” sur Android O

«Barre d'état des matériaux» sur Android O

Plutôt que de superposer la barre d'état d'origine à la superposition, il semble que la superposition se superpose à la barre d'état d'origine, ce qui entraîne un désordre énorme.

Malheureusement, cela rend effectivement des applications telles que celles-ci inutiles. Et ce ne sont pas uniquement les applications de thématisation de la barre d'état qui sont concernées: toutes les applications nécessitant l'affichage d'une superposition en haut de la barre d'état sont également affectées .

Voici une liste de certaines applications populaires qui peuvent être rendues inutiles:

  • Statut (500 000 - 1 000 000 d'installations)
  • Barre d'état du matériel (1 000 000 à 5 000 000 d'installations)
  • Cool Tool - Statistiques système (500 000 à 1 000 000 d'installations)
  • Télécinéma (50 000 - 100 000 installations)
  • Nettoyer la barre d'état (100 000 - 500 000 installations)
  • Tinycore (100 000 - 500 000 installations)

Et une liste de certaines applications qui fonctionneront, mais ne pourront plus se superposer au-dessus de la barre d'état (restreignant les fonctionnalités précédentes):

  • Twilight (5 000 000 - 10 000 000 d'installations)
  • HeadsUp (100 000 - 500 000 installations)
  • Moniteur de ressources Mini (50 000 à 100 000 installations)
  • Moniteur réseau Mini (1 000 000 à 5 000 000 d'installations)

De nombreuses autres applications sur le Play Store utilisent une sorte de superposition au-dessus de la barre d'état, mais vous pouvez déjà dire qu'un tel changement affectera de nombreuses applications utilisées par des millions d'utilisateurs potentiels. Alors qu'est-ce qui se passe ici?


TYPE_SYSTEM_OVERLAY est obsolète

À chaque nouvelle itération d’Android, Google introduit et déprécie (désigne comme obsolète et à supprimer) diverses fonctionnalités. Cette fois, la fonction présente sur le bloc de découpage est TYPE_SYSTEM_OVERLAY. Pour citer la page de référence de ce que cette fonctionnalité offrait aux développeurs:

TYPE_SYSTEM_OVERLAY

Type de fenêtre: fenêtres superposées du système, qui doivent être affichées au-dessus de tout le reste. Ces fenêtres ne doivent pas prendre le focus d'entrée, sinon elles vont interférer avec le verrouillage du clavier. Dans les systèmes multi-utilisateurs, uniquement sur la fenêtre de l'utilisateur propriétaire.

Ce type de fenêtre permet essentiellement à une application de dessiner au-dessus de n’importe quel élément de l’écran, y compris la barre d’état. Cependant, à partir d'Android O, ce type de fenêtre est obsolète. Pour les applications non-système, Google recommande aux développeurs d'utiliser TYPE_APPLICATION_OVERLAY à la place. Pour citer la page de référence de ce que fait ce nouveau type de fenêtre:

TYPE_APPLICATION_OVERLAY

Type de fenêtre: les fenêtres de superposition d'applications sont affichées au-dessus de toutes les fenêtres d'activité (types compris entre FIRST_APPLICATION_WINDOW et LAST_APPLICATION_WINDOW ) mais en dessous de fenêtres système critiques telles que la barre d'état ou l'IME.

Le système peut à tout moment modifier la position, la taille ou la visibilité de ces fenêtres afin de réduire l'encombrement visuel de l'utilisateur et de gérer les ressources.

Requiert l'autorisation SYSTEM_ALERT_WINDOW .

Le système ajustera l’importance des processus avec ce type de fenêtre afin de réduire les risques de destruction par le tueur à faible mémoire.

Dans les systèmes multi-utilisateurs, n’affiche que sur l’écran de l’utilisateur propriétaire.

Comme vous pouvez le constater, ce nouveau type de fenêtre permet aux applications de superposer du contenu par-dessus toutes les autres fenêtres d'activité, à l' exception des «fenêtres système critiques telles que la barre d'état ou l'IME» (IME désigne le clavier). Cela convient pour des applications telles que Facebook Messenger, car les têtes de chaîne fournies par cette application n'ont aucune raison d'être au-dessus de la barre d'état, mais cela affecte négativement la plupart des applications que j'ai mentionnées précédemment.

En outre, il ne semble pas que les développeurs utilisent une solution de contournement pour le moment. Pour éviter ce problème sur Android O, on pourrait s’attendre à ce que les développeurs construisent simplement leurs applications pour cibler le SDK 25 (Android 7.1.1). Toutefois, comme l'a souligné le développeur de Status sur Reddit, Google a remplacé TYPE_SYSTEM_OVERLAY par TYPE_APPLICATION_OVERLAY et la modification est indépendante de la version du SDK cible . Les développeurs utilisant TYPE_SYSTEM_OVERLAY doivent actuellement utiliser TYPE_APPLICATION_OVERLAY pour maintenir la compatibilité. Par conséquent, quelle que soit la version du kit de développement ciblée sur laquelle une application particulière est basée, elle ne peut plus utiliser TYPE_SYSTEM_OVERLAY sur Android O.


Que peut-on faire à ce sujet?

La raison pour laquelle Google a apporté cette modification n'est pas tout à fait claire, car elle n'a pas encore fourni d'explication officielle. J'imagine que c'est une tentative d'améliorer la sécurité sur Android en empêchant les utilisateurs peu méfiants d'installer accidentellement des applications bloquant ou remplaçant de manière malveillante leur barre d'état. Malheureusement, cette modification intercepte beaucoup d'applications parfaitement légitimes qui utilisent TYPE_SYSTEM_OVERLAY dans le feu croisé.

Les développeurs qui utilisent cette fonctionnalité ont ouvert des rapports de bogue sur Issue Tracker d'Android (n ° 260787 et n ° 36574245) pour protester contre cette modification et demander une autre API, mais un Googler a commenté le traqueur avec la déclaration suivante:

Statut: Ne sera pas corrigé (comportement souhaité)

Nous avons suivi le produit et l'équipe d'ingénierie et suggéré aux développeurs de pouvoir utiliser les activités SHOW_WHEN_LOCKED pour indiquer quand le périphérique est verrouillé, mais il n'est intentionnellement plus possible d'afficher via l'écran de verrouillage / la notification.

Pour le moment, il semble que ces développeurs n’ont pas de chance, car ils ont fait remarquer que FLAG_SHOW_WHEN_LOCKED ne permet toujours pas de superposer les fenêtres au-dessus de la barre d’état. Ce que les développeurs de ces applications peuvent faire n'est pas clair, à moins de prier pour que Google change les choses ou élève l'enfer à ce sujet.

Comme il ne s’agit que du premier aperçu du développeur pour Android O, il est toujours possible pour Google de changer d’avis et d’offrir cette fonctionnalité aux applications qui ne ciblent pas Android O, ou à Google de restaurer TYPE_SYSTEM_OVERLAY. Mais si les choses restent comme elles sont actuellement, vous pouvez embrasser ces applications au revoir . Et ce serait vraiment dommage.


Merci à Eli Irvin pour avoir testé plusieurs de ces applications pour moi!