Ascundeți notificările persistente pentru aplicațiile de fundal și suprapuneri în Android O

click fraud protection

Tutorial despre ascunderea notificării persistente în Android O care arată când rulează o aplicație în fundal sau când este afișată o suprapunere.

Actualizare 25/08/17: Acest tutorial este acum învechit, deoarece Google a corectat metoda pe care o folosim pentru a ascunde notificarea persistentă în fundal. Cu toate acestea, am descoperit o altă soluție la această problemă și am scris un scurt tutorial despre aceasta puteti gasi aici.

Android O caută să aducă îmbunătățiri majore sistemului de operare Android pe care îl cunoaștem și îl iubim cu toții. Modul imagine în imagine pentru telefoane, canale de notificare, selectare inteligentă a textului, servicii de completare automată și sub capotă multe, multe modificări pentru a vă îmbunătăți durata de viață a bateriei, performanța și securitatea. O caracteristică care ar trebui să ajute utilizatorii să rezolve problemele cu durata de viață a bateriei și performanța este limitările procesului de fundal. Fără a intra în prea multe detalii, aplicațiile din Android O nu mai pot fi trezite din manifestul înregistrat receptoare implicite de difuzare și nu mai pot porni servicii de fundal fără a trece prin JobScheduler. Dacă o aplicație dorește să pornească un serviciu de fundal, trebuie să spună în mod explicit utilizatorului că face acest lucru, postând o notificare. Cu toate acestea, atunci când o aplicație rulează în fundal, Android O acum se pare că continuă 

o alta notificare persistentă care vă spune ce aplicații rulează. Acest lucru se întâmplă și atunci când o aplicație cu SYSTEM_ALERT_WINDOW permisiunea (cum ar fi cea populară Amurg aplicația) afișează în prezent o suprapunere.

Android O Notificare persistentă pentru aplicațiile de fundal și de suprapunere. Credite: Ben Schoon \\ 9to5Google

Deși aceste notificări sunt minimizate în mod implicit, ele nu pot fi respinse de utilizator sau blocate definitiv în Setări. Acest comportament este foarte enervant pentru mulți utilizatori și sper serios că Google ne oferă o modalitate de a dezactiva această notificare în versiunea finală Android O/Android 8.0. Cu toate acestea, dacă nu, acolo este încă un mod de a ascunde permanent notificarea aplicațiilor de fundal persistente. Voi prezenta cum să faceți acest lucru într-un ghid pas cu pas, urmat de o explicație a modului în care funcționează, precum și de avertismente importante.


Cerințe:

  • Android O
  1. Instalați driverele USB pentru telefonul dvs. dacă sunteți pe Windows (acestea pot fi găsite Aici).
  2. Descărcați ADB binar pentru sistemul dvs. de operare special (Windows, Mac, Linux). Aceste link-uri vor indica întotdeauna cea mai recentă versiune a binarului, așa că nu trebuie să căutați pe net cea mai recentă.
  3. Extrageți conținutul fișierului ZIP pe care l-ați descărcat într-un folder ușor accesibil de pe computer (cum ar fi folderul Descărcări).
  4. Accesați aplicația Setări de pe telefon și atingeți opțiunea „Despre telefon”.
  5. Găsiți numărul versiunii și atingeți-l de 7 ori pentru a activa Modul dezvoltator. Veți vedea o fereastră pop-up odată ce este activată.
  6. Reveniți la meniul principal Setări și intrați în Opțiuni pentru dezvoltatori, astfel încât să puteți activa Modul de depanare USB.
  7. Conectați-vă telefonul la computer și glisați în jos panoul de notificări pentru a schimba modul USB din modul „numai încărcare” în modul „transfer fișiere (MTP)”. Acest lucru poate să nu fie necesar pentru telefonul dvs.
  8. Pe computerul dvs., navigați la directorul de unde ați extras binarul ADB.
  9. Lansați un prompt de comandă/terminal în acest director ADB. Pentru utilizatorii de Windows, acest lucru se poate face cu Shift+clic dreapta, apoi selectând opțiunea „deschideți promptul de comandă aici”.
  10. Odată ce vă aflați în linia de comandă sau în mediul Terminal, introduceți următoarea comandă: adb devices
  11. Aceasta va porni demonul ADB. Dacă este prima dată când rulați ADB, veți vedea și o solicitare pe telefon care vă va cere să autorizați o conexiune.
  12. Acum rulați din nou comanda adb devices de la pasul 10, iar promptul/terminalul de comandă va tipări numărul de serie al dispozitivului dvs. Dacă o face, atunci ești gata să mergi mai departe. Dacă nu, atunci driverele USB probabil nu sunt instalate corect.
  13. Reveniți la linia de comandă și introduceți următoarea comandă: adb shell
  14. Acum executați următoarea comandă: cmd appops set android POST_NOTIFICATION ignore
  15. Nu veți primi un mesaj de succes sau altceva, dar atâta timp cât nu vedeți o eroare, ar fi trebuit să funcționeze. Acum doar reporniți telefonul!

    Da, îmi dau seama că acestea sunt mai degrabă imagini ale ecranului unui telefon decât capturi de ecran. Eu nu am un dispozitiv compatibil cu Android O, așa că i-am cerut TK să-mi trimită imagini.

  16. Dacă doriți să anulați această comandă, introduceți aceasta în linia de comandă: cmd appops set android POST_NOTIFICATION allow

Cum functioneaza

Folosind interfața de linie de comandă ascunsă pentru App Ops, sistemul Android de gestionare a permisiunilor pentru utilizatori, putem restricționa permisiunea POST_NOTIFICATION din pachetul „android”. (Notă: îl setăm să „ignore” mai degrabă decât să „refuze”, deoarece „nega” ar putea cauza unele erori.) Am găsit această permisiune uitându-mă la codul sursă relevant pentru AppOpsManager, care listează toate permisiunile posibile care pot fi acordate/revocate, dintre care multe nu sunt accesibile în setările Android. Pachetul „android” se referă de fapt la „Android System” AKA framework-res.apk, care este responsabil pentru notificarea persistentă de care încercăm să scăpăm.

În esență, revocând permisiunea POST_NOTIFICATION a sistemului Android, acesta nu mai poate afișa o notificare! Sună destul de simplu, nu? Din păcate, există un avertisment de care trebuie să fii conștient. „Android System” este responsabil pentru mai mult decât pentru această notificare, așa că orice alte notificări pe care le poate posta nu vor mai fi afișate. Aceasta poate include notificarea modului USB (care poate fi schimbată în continuare prin setarea din Opțiuni pentru dezvoltatori), precum și alte lucruri.

Deși aceasta este o măsură destul de drastică de luat din partea noastră, în prezent este singura modalitate de a ascunde această notificare. de la rootarea telefonului și modificarea cadrului în sine, ceea ce este, evident, ceva ce nu mulți utilizatori doresc sau pot a face. Sper din tot sufletul că Google oferă o modalitate de a ascunde această notificare într-o versiune viitoare a Android O, sau chiar mai bine de a elimina această notificare în întregime. În mod înțeles, Google dorește să îmbunătățească experiența utilizatorului, informând utilizatorii atunci când o aplicație rulează în fundal Este posibil ca utilizatorul să nu fie conștient, dar metoda pe care a ales-o este enervantă pentru cei dintre noi care știu ce despre fiecare aplicație suntem folosind.