Skjul vedvarende meddelelse for baggrundsapps og -overlejringer i Android O

Selvstudium om at skjule den vedvarende meddelelse i Android O, der viser, hvornår en baggrundsapp kører, eller når en overlejring vises.

Opdatering 8/25/17: Denne vejledning er nu forældet, da Google lappede den metode, vi bruger til at skjule den vedvarende meddelelse i baggrunden. Vi har dog opdaget en anden løsning på dette problem og har skrevet en kort vejledning om det du kan finde her.

Android O søger at bringe store forbedringer til det Android OS, vi alle kender og elsker. Billede-i-billede-tilstand til telefoner, notifikationskanaler, smart tekstvalg, autofyldtjenester og mange, mange ændringer under motorhjelmen for at forbedre din batterilevetid, ydeevne og sikkerhed. En funktion, der formodes at hjælpe brugere med at løse problemer med batterilevetid og ydeevne, er baggrundsprocesbegrænsninger. Uden at gå for meget i detaljer kan apps i Android O ikke længere vækkes fra deres manifest-registrerede implicitte broadcast-modtagere, og de kan ikke længere starte baggrundstjenester uden at gå igennem JobScheduler. Hvis en app ønsker at starte en baggrundstjeneste, skal den udtrykkeligt fortælle brugeren, at den gør det ved at sende en notifikation. Men når en app kører i baggrunden, går Android O nu tilsyneladende videre 

en anden vedvarende meddelelse, der fortæller dig, hvilke apps der kører. Dette sker også, når en app med SYSTEM_ALERT_WINDOW tilladelse (såsom den populære Tusmørke app) viser i øjeblikket en overlejring.

Android O Vedvarende meddelelse til baggrunds- og overlejringsapps. Kreditering: Ben Schoon \\ 9to5Google

Selvom disse meddelelser er minimeret som standard, kan de ikke afvises af brugeren eller permanent blokeres i Indstillinger. Denne adfærd er meget irriterende for mange brugere, og jeg håber seriøst, at Google giver os en måde at deaktivere denne notifikation i den endelige Android O/Android 8.0-udgivelse. Men hvis de ikke gør det, der er stadig en måde at skjul permanent meddelelsen om vedvarende apps i baggrunden. Jeg vil vise, hvordan man gør det i en trin-for-trin guide, efterfulgt af en forklaring på, hvordan det fungerer, samt vigtige forbehold.


Krav:

  • Android O
  1. Installer USB-driverne til din specifikke telefon, hvis du er på Windows (de kan findes her).
  2. Download ADB binær til dit bestemte operativsystem (Windows, Mac, Linux). Disse links vil altid pege på den nyeste version af binæren, så du ikke behøver at lede på nettet på udkig efter den nyeste.
  3. Udpak indholdet af den ZIP-fil, du downloadede, til en let tilgængelig mappe på din pc (såsom i mappen Downloads).
  4. Gå til appen Indstillinger på din telefon, og tryk på "Om telefon".
  5. Find byggenummeret, og tryk på det 7 gange for at aktivere udviklertilstand. Du vil se en pop op, når den er aktiveret.
  6. Gå tilbage til hovedmenuen Indstillinger og indtast Udviklerindstillinger, så du kan aktivere USB-fejlretningstilstand.
  7. Tilslut din telefon til pc'en, og stryg dit meddelelsespanel ned for at ændre USB-tilstanden fra "kun opladning" til "filoverførsel (MTP)"-tilstand. Dette er muligvis ikke nødvendigt for din telefon.
  8. På din pc skal du gå til den mappe, hvor du udpakkede ADB-binæren.
  9. Start en kommandoprompt/terminal i denne ADB-mappe. For Windows-brugere kan dette gøres med et Shift+Højreklik og derefter vælge "åbn kommandoprompt her".
  10. Når du er i kommandoprompt- eller terminalmiljøet, skal du indtaste følgende kommando: adb devices
  11. Dette vil starte ADB-dæmonen. Hvis det er første gang, du kører ADB, vil du også se en prompt på din telefon, der beder dig om at godkende en forbindelse.
  12. Kør nu adb devices-kommandoen igen fra trin 10, og kommandoprompten/terminalen udskriver serienummeret på din enhed. Hvis det gør, så er du klar til at komme videre. Hvis ikke, er USB-driverne sandsynligvis ikke installeret korrekt.
  13. Gå tilbage til kommandoprompten og indtast følgende kommando: adb shell
  14. Udfør nu følgende kommando: cmd appops set android POST_NOTIFICATION ignore
  15. Du får ikke en succesmeddelelse eller noget, men så længe du ikke ser en fejl, burde det have virket. Nu skal du bare genstarte din telefon!

    Ja, jeg er klar over, at det er billeder af en telefonskærm i stedet for skærmbilleder. Jeg har ikke selv en Android O-kompatibel enhed, så jeg bad TK om at sende mig billeder.

  16. Hvis du vil gendanne denne kommando, skal du indtaste denne i kommandoprompten: cmd appops set android POST_NOTIFICATION allow

Hvordan det virker

Ved at bruge den skjulte kommandolinjegrænseflade til App Ops, Androids brugervendte tilladelsesstyringssystem, er vi i stand til at begrænse POST_NOTIFICATION-tilladelsen fra "android"-pakken. (Bemærk: vi indstiller den til "ignorer" i stedet for "deny", fordi "deny" kunne forårsage nogle fejl.) Jeg fandt denne tilladelse ved at se på den relevante kildekode for AppOpsManager, som viser alle de mulige tilladelser, der kan gives/tilbagekaldes, hvoraf mange ikke er tilgængelige i Android-indstillingerne. "Android"-pakken refererer faktisk til "Android System" AKA framework-res.apk, som er ansvarlig for den vedvarende meddelelse, som vi forsøger at slippe af med.

Ved i det væsentlige at tilbagekalde Android-systemets POST_NOTIFICATION-tilladelse, kan det ikke længere vise en notifikation! Lyder ret simpelt, ikke? Desværre er der en advarsel, man skal være opmærksom på. "Android System" er ansvarlig for mere end blot denne notifikation, så eventuelle andre notifikationer, som det måtte sende, vil ikke længere blive vist. Dette kan omfatte USB-tilstandsmeddelelsen (som stadig kan ændres gennem indstillingen i Udviklerindstillinger) samt nogle andre ting.

Selvom dette er en ret drastisk foranstaltning at tage fra vores side, er det i øjeblikket den eneste måde at skjule denne notifikation fra hinanden fra at roote din telefon og ændre selve rammen, hvilket åbenbart er noget, som ikke mange brugere er villige eller i stand til at gøre. Jeg håber inderligt, at Google tilbyder en måde at skjule denne notifikation i en fremtidig udgivelse af Android O, eller endnu bedre fjerne denne notifikation helt. Google ønsker forståeligt nok at forbedre brugeroplevelsen ved at give brugerne besked, når en app kører i baggrunden brugeren er måske ikke klar over, men den metode, de valgte, er irriterende for dem af os, der ved, hvad med hver app, vi er ved brug af.