Paslēpt pastāvīgos paziņojumus par fona lietotnēm un pārklājumiem operētājsistēmā Android O

Pamācība par pastāvīgo paziņojumu slēpšanu operētājsistēmā Android O, kas parāda, kad darbojas fona lietotne vai tiek rādīts pārklājums.

Atjauninājums 25.08.17.: šī apmācība tagad ir novecojusi, jo Google laboja metodi, ko mēs izmantojam, lai fonā paslēptu pastāvīgo paziņojumu. Tomēr mēs esam atklājuši citu šīs problēmas risinājumu un esam uzrakstījuši īsu pamācību par to jūs varat atrast šeit.

Android O vēlas ieviest būtiskus uzlabojumus Android OS, ko mēs visi zinām un mīlam. Attēls attēlā režīms tālruņiem, paziņojumu kanāli, viedā teksta atlase, automātiskās aizpildes pakalpojumi un daudzas, daudzas izmaiņas, kas paredzētas, lai uzlabotu akumulatora darbības laiku, veiktspēju un drošību. Viena funkcija, kurai vajadzētu palīdzēt lietotājiem atrisināt problēmas ar akumulatora darbības laiku un veiktspēju, ir fona procesa ierobežojumi. Neiedziļinoties pārāk daudz detaļās, Android O lietotnes vairs nevar pamodināt no to manifesta reģistrēšanas netiešos apraides uztvērējus, un tie vairs nevar palaist fona pakalpojumus, neizejot cauri Darba plānotājs. Ja lietotne vēlas palaist fona pakalpojumu, tai ir skaidri jāpaziņo lietotājam, ka tā to dara, publicējot paziņojumu. Tomēr, kad lietotne darbojas fonā, Android O tagad šķietami ieslēdzas 

cits pastāvīgs paziņojums, kas informē, kuras lietotnes darbojas. Tas notiek arī tad, ja lietotne ar SYSTEM_ALERT_WINDOW atļauja (piemēram, populārā Krēsla app) pašlaik tiek rādīts pārklājums.

Android O pastāvīgs paziņojums fona un pārklājuma lietotnēm. Autori: Bens Šons \\ 9to5Google

Lai gan šie paziņojumi pēc noklusējuma ir minimizēti, lietotājs nevar tos noraidīt vai neatgriezeniski bloķēt sadaļā Iestatījumi. Šāda rīcība ir ļoti kaitinoša daudziem lietotājiem, un es ļoti ceru, ka Google piedāvās veidu, kā atspējot šo paziņojumu pēdējā Android O/Android 8.0 laidienā. Tomēr, ja viņi to nedara, tur ir joprojām ir veids, kā neatgriezeniski slēpt pastāvīgos fona lietotņu paziņojumus. Es parādīšu, kā to izdarīt, soli pa solim, kam sekos paskaidrojums par to, kā tas darbojas, kā arī svarīgi brīdinājumi.


Prasības:

  • Android O
  1. Ja izmantojat operētājsistēmu Windows, instalējiet USB draiverus savam konkrētajam tālrunim (tos var atrast šeit).
  2. Lejupielādēt ADB binārs jūsu konkrētajai operētājsistēmai (Windows, Mac, Linux). Šīs saites vienmēr norādīs uz jaunāko binārā versija, tāpēc jums nav jāmeklē tīkls, meklējot jaunāko versiju.
  3. Izvelciet lejupielādētā ZIP faila saturu viegli pieejamā datora mapē (piemēram, mapē Lejupielādes).
  4. Tālrunī atveriet lietotni Iestatījumi un pieskarieties opcijai "Par tālruni".
  5. Atrodiet būvējuma numuru un pieskarieties tam 7 reizes, lai iespējotu izstrādātāja režīmu. Tiklīdz tas būs iespējots, tiks parādīts uznirstošais logs.
  6. Atgriezieties galvenajā izvēlnē Iestatījumi un ievadiet Izstrādātāja opcijas, lai varētu iespējot USB atkļūdošanas režīmu.
  7. Pievienojiet tālruni datoram un velciet uz leju paziņojumu paneli, lai mainītu USB režīmu no “tikai uzlādes” uz “failu pārsūtīšanas (MTP)” režīmu. Tas var nebūt nepieciešams jūsu tālrunim.
  8. Datorā pārlūkojiet direktoriju, kurā ieguvāt ADB bināro failu.
  9. Palaidiet komandu uzvedni/termināli šajā ADB direktorijā. Windows lietotājiem to var izdarīt, nospiežot Shift + ar peles labo pogu un pēc tam atlasot opciju “atvērt komandu uzvedni šeit”.
  10. Kad esat komandu uzvednes vai termināļa vidē, ievadiet šo komandu: adb devices
  11. Tas sāks ADB dēmonu. Ja šī ir pirmā reize, kad izmantojat ADB, tālrunī tiks parādīta uzvedne ar aicinājumu autorizēt savienojumu.
  12. Tagad atkārtoti palaidiet komandu adb devices no 10. darbības, un komandu uzvedne/terminālis izdrukās jūsu ierīces sērijas numuru. Ja tā ir, tad esat gatavs doties tālāk. Ja nē, iespējams, USB draiveri nav pareizi instalēti.
  13. Atgriezieties komandu uzvednē un ievadiet šādu komandu: adb shell
  14. Tagad izpildiet šādu komandu: cmd appops set android POST_NOTIFICATION ignore
  15. Jūs nesaņemsit veiksmes ziņojumu vai kaut ko citu, taču, kamēr neredzat kļūdu, tam bija jādarbojas. Tagad vienkārši restartējiet tālruni!

    Jā, es saprotu, ka tie ir tālruņa ekrāna attēli, nevis ekrānuzņēmumi. Man pašam nav ar Android O saderīgas ierīces, tāpēc es palūdzu TK atsūtīt man attēlus.

  16. Ja vēlaties atsaukt šo komandu, ievadiet šo komandu uzvednē: cmd appops set android POST_NOTIFICATION allow

Kā tas strādā

Izmantojot slēpto komandrindas saskarni App Ops, Android lietotājam paredzētajai atļauju pārvaldības sistēmai, mēs varam ierobežot POST_NOTIFICATION atļauju no pakotnes "android". (Piezīme: mēs to iestatām uz "ignorēt", nevis "liegt", jo "liegt" var izraisīt dažas kļūdas.) Es atradu šo atļauju, apskatot atbilstošo avota kodu AppOpsManager, kurā ir uzskaitītas visas iespējamās atļaujas, kuras var piešķirt/atsaukt, un daudzas no tām nav pieejamas Android iestatījumos. Pakotne "android" faktiski attiecas uz "Android System" AKA framework-res.apk, kas ir atbildīga par pastāvīgo paziņojumu, no kura mēs cenšamies atbrīvoties.

Būtībā atsaucot Android sistēmas POST_NOTIFICATION atļauju, tā vairs nevar rādīt paziņojumu. Izklausās diezgan vienkārši, vai ne? Diemžēl ir kāds brīdinājums, kas jāņem vērā. "Android sistēma" ir atbildīga ne tikai par šo paziņojumu, tāpēc visi citi paziņojumi, ko tā var publicēt, vairs netiks rādīti. Tas var ietvert USB režīma paziņojumu (to joprojām var mainīt, izmantojot iestatījumu Izstrādātāja opcijās), kā arī dažas citas lietas.

Lai gan tas ir diezgan drastisks pasākums, kas mums jāveic, pašlaik tas ir vienīgais veids, kā paslēpt šo paziņojumu atsevišķi no tālruņa sakņu izveides un paša ietvara modificēšanas, ko acīmredzot maz lietotāju nevēlas vai spēj darīt. Es patiesi ceru, ka Google piedāvā veidu, kā paslēpt šo paziņojumu nākamajā Android O laidienā vai pat labāk pilnībā noņemt šo paziņojumu. Saprotams, ka Google vēlas uzlabot lietotāja pieredzi, brīdinot lietotājus, kad lietotne darbojas fonā lietotājs var nezināt, bet viņu izvēlētā metode ir kaitinoša tiem no mums, kuri zina, ko par katru lietotni mēs esam izmantojot.