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.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
- Installer USB-driverne for telefonen din hvis du bruker Windows (de kan bli funnet her).
- 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.
- Pakk ut innholdet i ZIP-filen du lastet ned til en lett tilgjengelig mappe på PC-en din (for eksempel i nedlastingsmappen).
- Gå til Innstillinger-appen på telefonen og trykk på alternativet "Om telefon".
- Finn byggenummeret og trykk på det 7 ganger for å aktivere utviklermodus. Du vil se en popup når den er aktivert.
- Gå tilbake til hovedmenyen for innstillinger og skriv inn utvikleralternativer slik at du kan aktivere USB-feilsøkingsmodus.
- 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.
- På PC-en din, bla til katalogen der du pakket ut ADB-binæren.
- 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".
- Når du er i ledeteksten eller terminalmiljøet, skriv inn følgende kommando:
adb devices
- 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.
- 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.
- Gå tilbake til ledeteksten og skriv inn følgende kommando:
adb shell
- Utfør nå følgende kommando:
cmd appops set android POST_NOTIFICATION ignore
- 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.
- 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.