Skjul vedvarende varsling for bakgrunnsapper og -overlegg i Android O

Veiledning for å skjule det vedvarende varselet i Android O som viser når en bakgrunnsapp kjører eller når et overlegg vises.

Oppdatering 8/25/17: Denne opplæringen er nå foreldet, siden Google lappet metoden vi bruker for å skjule den vedvarende varslingen i bakgrunnen. Vi har imidlertid oppdaget en annen løsning på dette problemet og har skrevet en kort veiledning om det du finner her.

Android O er ute etter å gi store forbedringer til Android OS vi alle kjenner og elsker. Bilde-i-bilde-modus for telefoner, varslingskanaler, smart tekstvalg, autofylltjenester, og under panseret mange, mange endringer for å forbedre batterilevetiden, ytelsen og sikkerheten. En funksjon som skal hjelpe brukere med å løse problemer med batterilevetid og ytelse er bakgrunnsprosessbegrensninger. Uten å gå inn i for mye detaljer, kan apper i Android O ikke lenger vekkes fra deres manifest-registrerte implisitte kringkastingsmottakere og de kan ikke lenger starte bakgrunnstjenester uten å gå gjennom Job Scheduler. Hvis en app ønsker å starte en bakgrunnstjeneste, må den eksplisitt fortelle brukeren at den gjør det ved å legge ut et varsel. Men når en app kjører i bakgrunnen, slår Android O nå tilsynelatende på 

en annen vedvarende varsling som forteller deg hvilke apper som kjører. Dette skjer også når en app med SYSTEM_ALERT_WINDOW tillatelse (som den populære Skumring app) viser for øyeblikket et overlegg.

Android O vedvarende varsling for bakgrunns- og overleggsapper. Kreditt: Ben Schoon \\ 9to5Google

Selv om disse varslene er minimert som standard, kan de ikke avvises av brukeren eller blokkeres permanent i Innstillinger. Denne oppførselen er veldig irriterende for mange brukere, og jeg håper seriøst at Google gir oss en måte å deaktivere denne varslingen i den endelige Android O/Android 8.0-utgivelsen. Men hvis de ikke gjør det, der er fortsatt en måte å skjul permanent varselet om bakgrunnsapper. Jeg vil vise frem hvordan du gjør det i en trinn-for-trinn-guide, etterfulgt av en forklaring på hvordan det fungerer, samt viktige forbehold.


Krav:

  • Android O
  1. Installer USB-driverne for telefonen din hvis du bruker Windows (de kan bli funnet her).
  2. Last ned ADB binær for ditt spesifikke operativsystem (Windows, Mac, Linux). Disse koblingene vil alltid peke til den nyeste versjonen av binærfilen, så du trenger ikke å lete etter den nyeste på nettet.
  3. Pakk ut innholdet i ZIP-filen du lastet ned til en lett tilgjengelig mappe på PC-en din (for eksempel i nedlastingsmappen).
  4. Gå til Innstillinger-appen på telefonen og trykk på alternativet "Om telefon".
  5. Finn byggenummeret og trykk på det 7 ganger for å aktivere utviklermodus. Du vil se en popup når den er aktivert.
  6. Gå tilbake til hovedmenyen for innstillinger og skriv inn utvikleralternativer slik at du kan aktivere USB-feilsøkingsmodus.
  7. Koble telefonen til PC-en og sveip ned varslingspanelet for å endre USB-modusen fra «kun lade» til «filoverføring (MTP)»-modus. Dette er kanskje ikke nødvendig for telefonen din.
  8. På PC-en din, bla til katalogen der du pakket ut ADB-binæren.
  9. Start en ledetekst/terminal i denne ADB-katalogen. For Windows-brukere kan dette gjøres med Shift+Høyreklikk og deretter velge "åpne ledetekst her".
  10. Når du er i ledeteksten eller terminalmiljøet, skriv inn følgende kommando: adb devices
  11. Dette vil starte ADB-demonen. Hvis dette er første gang du kjører ADB, vil du også se en melding på telefonen din som ber deg om å godkjenne en tilkobling.
  12. Kjør nå adb devices-kommandoen på nytt fra trinn 10, og ledeteksten/terminalen vil skrive ut serienummeret til enheten din. Hvis det gjør det, er du klar til å gå videre. Hvis ikke, er USB-driverne sannsynligvis ikke installert riktig.
  13. Gå tilbake til ledeteksten og skriv inn følgende kommando: adb shell
  14. Utfør nå følgende kommando: cmd appops set android POST_NOTIFICATION ignore
  15. Du vil ikke få en suksessmelding eller noe, men så lenge du ikke ser en feil, burde det ha fungert. Nå er det bare å starte telefonen på nytt!

    Ja, jeg skjønner at dette er bilder av en telefonskjerm i stedet for skjermbilder. Jeg har ikke en Android O-kompatibel enhet selv, så jeg ba TK om å sende meg bilder.

  16. Hvis du vil tilbakestille denne kommandoen, skriv inn denne i ledeteksten: cmd appops set android POST_NOTIFICATION allow

Hvordan det fungerer

Ved å bruke det skjulte kommandolinjegrensesnittet for App Ops, Androids brukervendte tillatelsesstyringssystem, kan vi begrense POST_NOTIFICATION-tillatelsen fra "android"-pakken. (Merk: vi setter den til "ignorer" i stedet for "deny" fordi "deny" kan forårsake noen feil.) Jeg fant denne tillatelsen ved å se på den relevante kildekoden for AppOpsManager, som viser alle mulige tillatelser som kan gis/oppheves, mange av dem er ikke tilgjengelige i Android-innstillingene. "Android"-pakken refererer faktisk til "Android System" AKA framework-res.apk, som er ansvarlig for den vedvarende varslingen som vi prøver å bli kvitt.

Ved å tilbakekalle Android-systemets POST_NOTIFICATION-tillatelse, kan det ikke lenger vise et varsel! Høres ganske enkelt ut, ikke sant? Dessverre er det et forbehold å være klar over. «Android System» er ansvarlig for mer enn bare denne varslingen, så eventuelle andre varsler som den kan legge ut, vil ikke lenger vises. Dette kan inkludere USB-modusvarsling (som fortsatt kan endres gjennom innstillingen i Utvikleralternativer) samt noen andre ting.

Selv om dette er et ganske drastisk tiltak å ta fra vår side, er det for øyeblikket den eneste måten å skjule dette varselet fra hverandre fra å roote telefonen din og endre selve rammeverket, noe som åpenbart ikke er mange brukere som vil eller kan å gjøre. Jeg håper inderlig at Google tilbyr en måte å skjule dette varselet i en fremtidig utgivelse av Android O, eller enda bedre fjerne denne varslingen helt. Google ønsker forståelig nok å forbedre brukeropplevelsen ved å varsle brukere når en app kjører i bakgrunnen brukeren er kanskje ikke klar over, men metoden de valgte er irriterende for de av oss som vet hva med hver app vi er ved hjelp av.