Opastus jatkuvan ilmoituksen piilottamisesta Android O: ssa, joka näyttää, kun taustasovellus on käynnissä tai kun peittokuva on näkyvissä.
Päivitys 25.8.2017: Tämä opetusohjelma on nyt vanhentunut, koska Google korjasi menetelmän, jota käytämme piilottaaksemme jatkuvan ilmoituksen taustalla. Olemme kuitenkin löytäneet toisen kiertotavan tähän ongelmaan ja kirjoittaneet siitä lyhyen opetusohjelman, joka löydät täältä.
Android O haluaa tuoda merkittäviä parannuksia Android-käyttöjärjestelmään, jonka me kaikki tiedämme ja rakastamme. Kuva kuvassa -tila puhelimille, ilmoituskanavat, älykäs tekstin valinta, automaattinen täyttöpalvelut ja konepellin alla monia, monia muutoksia akun käyttöiän, suorituskyvyn ja turvallisuuden parantamiseksi. Yksi ominaisuus, jonka on tarkoitus auttaa käyttäjiä selvittämään akun käyttöikään ja suorituskykyyn liittyviä ongelmia, ovat taustaprosessin rajoitukset. Menemättä liian yksityiskohtiin, Android O: n sovelluksia ei voi enää herättää luetteloon rekisteröidyistä implisiittisiä lähetysvastaanottimia, eivätkä ne voi enää käynnistää taustapalveluita läpikäymättä niitä JobScheduler. Jos sovellus haluaa käynnistää taustapalvelun, sen on kerrottava käyttäjälle, että se tekee niin lähettämällä ilmoituksen. Kuitenkin, kun sovellus on käynnissä taustalla, Android O näyttää nyt käynnistyvän
toinen jatkuva ilmoitus, joka kertoo, mitkä sovellukset ovat käynnissä. Tämä tapahtuu myös, kun sovellus, jossa on SYSTEM_ALERT_WINDOW lupa (kuten suosittu Iltahämärä app) näyttää tällä hetkellä peittokuvan.Vaikka nämä ilmoitukset on oletuksena minimoitu, käyttäjä ei voi hylätä niitä tai estää pysyvästi Asetuksissa. Tämä käyttäytyminen on erittäin ärsyttävää monille käyttäjille, ja toivon vakavasti, että Google antaa meille tavan poistaa tämä ilmoitus käytöstä lopullisessa Android O/Android 8.0 -julkaisussa. Kuitenkin, jos he eivät, siellä On vielä tapa piilottaa pysyvästi taustasovellusten ilmoituksen. Esittelen kuinka se tehdään vaiheittaisessa oppaassa, jonka jälkeen selitän, miten se toimii, sekä tärkeitä varoituksia.
Vaatimukset:
- Android O
- Asenna tietyn puhelimesi USB-ohjaimet, jos käytät Windowsia (ne löytyvät tässä).
- Lataa ADB binaari tietylle käyttöjärjestelmällesi (Windows, Mac, Linux). Nämä linkit osoittavat aina uusimpaan binaariversioon, joten sinun ei tarvitse selata verkkoa uusinta etsiessäsi.
- Pura lataamasi ZIP-tiedoston sisältö helposti käytettävissä olevaan kansioon tietokoneellasi (kuten Lataukset-kansioon).
- Siirry puhelimesi Asetukset-sovellukseen ja napauta "Tietoja puhelimesta" -vaihtoehtoa.
- Etsi koontiversion numero ja napauta sitä 7 kertaa ottaaksesi kehittäjätilan käyttöön. Näet ponnahdusikkunan, kun se on käytössä.
- Palaa Asetukset-päävalikkoon ja valitse Kehittäjäasetukset, jotta voit ottaa USB-virheenkorjaustilan käyttöön.
- Kytke puhelin tietokoneeseen ja pyyhkäise alas ilmoituspaneelia vaihtaaksesi USB-tilan "vain lataus" -tilasta "tiedostonsiirto (MTP)" -tilaan. Tämä ei välttämättä ole tarpeen puhelimessasi.
- Selaa tietokoneellasi hakemistoon, josta purit ADB-binaarin.
- Käynnistä komentokehote/pääte tässä ADB-hakemistossa. Windows-käyttäjille tämä voidaan tehdä painamalla Shift + hiiren kakkospainiketta ja valitsemalla "avaa komentokehote tästä" -vaihtoehto.
- Kun olet komentokehote- tai pääteympäristössä, kirjoita seuraava komento:
adb devices
- Tämä käynnistää ADB-demonin. Jos tämä on ensimmäinen kerta, kun käytät ADB: tä, näet myös puhelimessasi kehotteen, joka pyytää sinua valtuuttamaan yhteyden.
- Suorita nyt adb-laitteet-komento uudelleen vaiheesta 10, ja komentokehote/pääte tulostaa laitteesi sarjanumeron. Jos on, olet valmis jatkamaan. Jos ei, USB-ajureita ei todennäköisesti ole asennettu oikein.
- Palaa komentokehotteeseen ja kirjoita seuraava komento:
adb shell
- Suorita nyt seuraava komento:
cmd appops set android POST_NOTIFICATION ignore
- Et saa menestysviestiä tai mitään, mutta niin kauan kuin et näe virhettä, sen olisi pitänyt toimia. Käynnistä vain puhelimesi uudelleen!
Kyllä, ymmärrän, että nämä ovat kuvia puhelimen näytöstä pikemminkin kuin kuvakaappauksia. Itselläni ei ole Android O -yhteensopivaa laitetta, joten pyysin TK: ta lähettämään minulle kuvia.
- Jos haluat palauttaa tämän komennon, kirjoita tämä komentokehotteeseen:
cmd appops set android POST_NOTIFICATION allow
Kuinka se toimii
Käyttämällä piilotettua komentorivikäyttöliittymää App Opsille, Androidin käyttäjäkohtaiselle käyttöoikeuksien hallintajärjestelmälle, voimme rajoittaa POST_NOTIFICATION-lupaa "android"-paketista. (Huomautus: asetamme sen tilaan "ohita" eikä "kiellä", koska "kieltäytyminen" voi aiheuttaa virheitä.) Löysin tämän luvan katsomalla asiaankuuluvaa lähdekoodia AppOpsManager, jossa luetellaan kaikki mahdolliset luvat, jotka voidaan myöntää/peruuttaa. Monet niistä eivät ole käytettävissä Android-asetuksissa. "Android"-paketti viittaa itse asiassa "Android System" -järjestelmään AKA framework-res.apk, joka on vastuussa jatkuvasta ilmoituksesta, josta yritämme päästä eroon.
Peruuttamalla Android-järjestelmän POST_NOTIFICATION-luvan, se ei voi enää näyttää ilmoitusta! Kuulostaa melko yksinkertaiselta, eikö? Valitettavasti on huomioitava varoitus. "Android System" on vastuussa muustakin kuin tästä ilmoituksesta, joten muita sen mahdollisesti lähettämiä ilmoituksia ei enää näytetä. Tämä voi sisältää USB-tilan ilmoituksen (jota voidaan silti muuttaa kehittäjäasetusten asetuksilla) sekä joitain muita asioita.
Vaikka tämä on melko jyrkkä toimenpide meidän osaltamme, se on tällä hetkellä ainoa tapa piilottaa tämä ilmoitus erilleen puhelimesi juurruttamisesta ja itse kehyksen muokkaamisesta, mikä on ilmeisesti jotain, jota monet käyttäjät eivät halua tai pysty tehdä. Toivon vilpittömästi, että Google tarjoaa tavan piilottaa tämä ilmoitus Android O: n tulevassa julkaisussa tai jopa parempi poistaa tämä ilmoitus kokonaan. Google haluaa ymmärrettävästi parantaa käyttökokemusta ilmoittamalla käyttäjille, kun jokin sovellus on käynnissä taustalla käyttäjä ei ehkä ole tietoinen, mutta hänen valitsemansa menetelmä on ärsyttävää niille meistä, jotka tietävät, mitä kukin sovelluksista olemme käyttämällä.