Skrij trajno obvestilo za aplikacije in prekrivke v ozadju v sistemu Android O

Vadnica o skrivanju trajnega obvestila v sistemu Android O, ki prikazuje, ko se izvaja aplikacija v ozadju ali ko je prikazano prekrivanje.

Posodobitev 8/25/17: ta vadnica je zdaj zastarela, saj je Google popravil metodo, ki jo uporabljamo za skrivanje trajnega obvestila v ozadju. Vendar smo odkrili drugo rešitev te težave in o njej napisali kratko vadnico najdete tukaj.

Android O želi prinesti velike izboljšave v operacijski sistem Android, ki ga vsi poznamo in imamo radi. Način slike v sliki za telefone, kanali za obveščanje, pametna izbira besedila, storitve samodejnega izpolnjevanja in pod pokrovom veliko, veliko sprememb za podaljšanje življenjske dobe baterije, zmogljivosti in varnosti. Ena funkcija, ki naj bi uporabnikom pomagala rešiti težave z življenjsko dobo baterije in zmogljivostjo, so omejitve procesov v ozadju. Ne da bi se spuščali v preveč podrobnosti, aplikacij v sistemu Android O ni več mogoče prebuditi iz njihovih registriranih manifestov implicitnih oddajnih sprejemnikov in ne morejo več zagnati storitev v ozadju, ne da bi šli skozi JobScheduler. Če želi aplikacija zagnati storitev v ozadju, mora uporabniku to izrecno povedati z objavo obvestila. Ko pa se aplikacija izvaja v ozadju, Android O zdaj navidezno deluje 

drugo trajno obvestilo, ki vam pove, katere aplikacije se izvajajo. To se zgodi tudi, ko aplikacija z SYSTEM_ALERT_WINDOW dovoljenje (kot je priljubljena Somrak aplikacija) trenutno prikazuje prosojnico.

Trajno obvestilo Android O za aplikacije v ozadju in prekrivne aplikacije. Zasluge: Ben Schoon \\ 9to5Google

Čeprav so ta obvestila privzeto zmanjšana, jih uporabnik ne more opustiti ali trajno blokirati v nastavitvah. To vedenje je zelo moteče za mnoge uporabnike in resno upam, da nam bo Google omogočil onemogočanje tega obvestila v končni izdaji Android O/Android 8.0. Vendar, če ne, tam je še vedno način za trajno skrije obvestilo o aplikacijah v ozadju. V vodniku po korakih bom predstavil, kako to storiti, čemur bo sledila razlaga, kako deluje, in pomembna opozorila.


Zahteve:

  • Android O
  1. Če uporabljate Windows, namestite gonilnike USB za svoj telefon (najdete jih tukaj).
  2. Prenesite ADB binarno za vaš operacijski sistem (Windows, Mac, Linux). Te povezave bodo vedno kazale na najnovejšo različico binarne datoteke, tako da vam ni treba brskati po omrežju in iskati najnovejšo.
  3. Ekstrahirajte vsebino datoteke ZIP, ki ste jo prenesli, v lahko dostopno mapo v računalniku (na primer v mapo Prenosi).
  4. Pojdite v aplikacijo Nastavitve v telefonu in tapnite možnost »O telefonu«.
  5. Poiščite številko gradnje in se je dotaknite 7-krat, da omogočite način za razvijalce. Videli boste pojavno okno, ko bo omogočeno.
  6. Vrnite se v glavni meni Nastavitve in vnesite Možnosti za razvijalce, da lahko omogočite način odpravljanja napak USB.
  7. Priključite telefon na računalnik in povlecite navzdol po obvestilni plošči, da spremenite način USB iz »samo polnjenje« v način »prenos datotek (MTP)«. To morda ni potrebno za vaš telefon.
  8. V računalniku poiščite imenik, v katerega ste ekstrahirali dvojiško datoteko ADB.
  9. Zaženite ukazni poziv/terminal v tem imeniku ADB. Za uporabnike operacijskega sistema Windows lahko to storite tako, da pritisnete Shift + desni klik in nato izberete možnost »odpri ukazni poziv tukaj«.
  10. Ko ste v okolju ukaznega poziva ali terminala, vnesite naslednji ukaz: adb devices
  11. To bo zagnalo demon ADB. Če prvič izvajate ADB, boste v telefonu videli tudi poziv, da odobrite povezavo.
  12. Zdaj znova zaženite ukaz adb devices iz 10. koraka in ukazni poziv/terminal bo natisnil serijsko številko vaše naprave. Če se, potem ste pripravljeni nadaljevati. Če ne, potem gonilniki USB verjetno niso pravilno nameščeni.
  13. Vrnite se v ukazni poziv in vnesite naslednji ukaz: adb shell
  14. Zdaj izvedite naslednji ukaz: cmd appops set android POST_NOTIFICATION ignore
  15. Ne boste prejeli sporočila o uspehu ali česa podobnega, a dokler ne vidite napake, bi moralo delovati. Zdaj samo ponovno zaženite telefon!

    Da, zavedam se, da so to slike zaslona telefona in ne posnetki zaslona. Sam nimam naprave, združljive s sistemom Android O, zato sem prosil TK, da mi pošlje slike.

  16. Če želite razveljaviti ta ukaz, vnesite to v ukazni poziv: cmd appops set android POST_NOTIFICATION allow

Kako deluje

Z uporabo skritega vmesnika ukazne vrstice za App Ops, Androidov sistem za upravljanje dovoljenj, namenjen uporabniku, lahko omejimo dovoljenje POST_NOTIFICATION iz paketa »android«. (Opomba: nastavili smo ga na »prezri« in ne na »zavrni«, ker bi »zavrnitev« lahko povzročila nekaj napak.) To dovoljenje sem našel tako, da sem pogledal ustrezno izvorno kodo za AppOpsManager, ki navaja vsa možna dovoljenja, ki jih je mogoče podeliti/preklicati, od katerih mnoga niso dostopna v nastavitvah Androida. Paket "android" se dejansko nanaša na "Android System" AKA framework-res.apk, ki je odgovoren za vztrajno obvestilo, ki se ga poskušamo znebiti.

Ker v bistvu prekličete dovoljenje POST_NOTIFICATION sistema Android, ne more več prikazati obvestila! Sliši se precej preprosto, kajne? Na žalost je treba upoštevati opozorilo. »Sistem Android« je odgovoren za več kot samo za to obvestilo, zato vsa druga obvestila, ki jih morda objavi, ne bodo več prikazana. To lahko vključuje obvestilo o načinu USB (ki ga je še vedno mogoče spremeniti z nastavitvijo v možnostih za razvijalce) in nekatere druge stvari.

Čeprav je to precej drastičen ukrep z naše strani, je to trenutno edini način, da skrijete to obvestilo od rootanja vašega telefona in spreminjanja samega ogrodja, kar je očitno nekaj, česar ni pripravljenih ali zmožnih veliko uporabnikov narediti. Iskreno upam, da bo Google ponudil način za skrivanje tega obvestila v prihodnji izdaji Androida O ali še bolje, da bo to obvestilo v celoti odstranil. Google razumljivo želi izboljšati uporabniško izkušnjo tako, da uporabnike obvesti, ko se aplikacija izvaja v ozadju uporabnik morda ne ve, vendar je metoda, ki so jo izbrali, moteča za tiste med nami, ki vemo, kaj o vsaki aplikaciji uporabo.