„Android 7.1“ ir naujesnėje versijoje yra „Panikos aptikimo“ režimas, aptinkantis pašėlusius atgalinio mygtuko paspaudimus

„Android Nougat“ (7.1 ir naujesnė versija) turi panikos aptikimo režimą, kuris nustato, ar vartotojas įnirtingai spaudžia atgal mygtuką. Skaitykite daugiau, kad sužinotumėte, ką tai daro.

Nors daugelis skaitytojų su „Android“ orientuotomis svetainėmis, pvz., mūsų pačių, susidurs rečiau situacijų, kai nesąžininga programa pažeidžia jų sistemą, tas pats gali būti netaikomas bendrajai gyventojų. Beveik kiekvieną savaitę iš įvairių saugos tyrinėtojų girdime apie naujas kenkėjiškas programas, skirtas Android naudotojams. Daugumos šių kenkėjiškų atakų galima išvengti patikrinus leidimus arba neįdiegiant eskiziškai atrodančių programų ir Nors mes rekomenduojame savo skaitytojams paimti savo telefono saugumą į savo rankas, „Google“ yra atsakinga už kiekvieno „Android“ apsaugą telefonas. Tuo tikslu bendrovė tyliai pristatė naują „Android 7.1 Nougat“ saugos funkciją, pavadintą „panikos aptikimas“, kuris klausosi kelių grįžimo mygtuko paspaudimų iš eilės, tada grąžina vartotoją į pagrindinį ekraną.

Paprasčiausiai, jei nesąžiningos programos bando užgrobti vartotojo ekraną ir neleisti vartotojui išeiti (galbūt įdiegus pritaikymo neįgaliesiems paslaugą, kad perimtų visus pagrindinius įvykius), „Android“ pati nepaisys programos, kad sugrąžintų Pradinis ekranas. Tada vartotojas gali pašalinti kenkėjišką programą iš paleidimo priemonės.

Ši funkcija buvo nepastebėta, suprantama, nes „Google“ greičiausiai nenorės reklamuoti pasauliui vienu būdu, kaip naikina kenkėjiškas programas. Tačiau trumpai pažvelgus į „Android“ atvirojo kodo kodą paaiškėja, kaip ši paprasta funkcija veikia ją palaikančiuose įrenginiuose.


Kodekso nagrinėjimas

Visų pirma, vien todėl, kad jūsų įrenginyje veikia 7.1 naujesnės versijos „Android“, dar nereiškia, kad šis panikos aptikimo veiksmas iš tikrųjų įjungtas. Reikšmę, kuri nustato, ar funkcija įjungta, galite rasti config.xml failą SystemUI APK.


<integername="config_backPanicBehavior">0integer>

Pagal numatytuosius nustatymus „Android“ reakcija paniškai paspaudus grįžimo mygtuką yra nieko nedaryti. Jei sveikasis skaičius config_backPanicBehavior yra nustatytas į 1, tačiau čia pradeda veikti naujoji „Android“ apsaugos priemonė.

Viduje PhoneWindowManager.java matome didžiąją dalį, kaip ši funkcija įdiegta. Visų pirma, failas apibrėžia du dalykus: kiek reikia paspausti mygtuką „Atgal“, kad sistema nustatytų, jog vartotojas „panikuoja“ ir tada kokių veiksmų imtis atsižvelgiant į šią būseną.

// Number of presses needed before we induce panic press behavior on the back button
staticfinalint PANIC_PRESS_BACK_COUNT = 4;
staticfinalint PANIC_PRESS_BACK_NOTHING = 0;
staticfinalint PANIC_PRESS_BACK_HOME = 1;

Pagal numatytuosius nustatymus sistema reikalauja 4 iš eilės atgal mygtuko paspaudimų, kad įjungtų panikos režimą. Nesvarbu, ar funkcija naudoja sveikojo skaičiaus reikšmę PANIC_PRESS_BACK_NOTHING arba PANIC_PRESS_BACK_HOME nustatoma pagal vertę, esančią SystemUI APK konfigūracijos faile.

Nepriklausomai nuo šios reikšmės, kiekvienas kelis kartus paspaudus atgal mygtuką patikrinamas, ar tai bus laikoma panikos paspaudimu. Pirma, sistema sulaiko spaudimą žemyn KEYCODE_BACK klavišo įvykį ir patikrina, ar sistema nustatyta tikrinti, ar klavišas paspaudžiamas kelis kartus arba ilgai, ar ne. Tada sistema patikrina, ar to paties KEYCODE_BACK klavišo įvykio paspaudimas aukštyn turėtų perduoti vartotojo programai.

Viduje interceptBackKeyDown() metodas, jei atgalinio klavišo paspaudimo skaitiklis yra tarp 1 ir 3, tada sistema praleidžia kelių paspaudimų aptikimo skirtąjį laiką, nes panikos aptikimui reikia bent 4 paspaudimų, kad būtų atliktas bet koks veiksmas.

Tada, vartotojui nuėmus pirštą nuo atgalinio klavišo, kuris suaktyvina įvykį aukštyn, interceptBackKeyUp prideda 1 prie galinio klavišo skaitiklio. Tada jis įtraukia pranešimą į eilę 300 milisekundžių ateityje. Taip yra todėl, kad sistema rezervuoja 300 milisekundžių delsos laikotarpį, kai nuspręs, ar mygtuko „Atgal“ paspaudimai yra kelių paspaudimų įvykio dalis. Jei taip, vartotojas gali panikuoti spausdamas mygtuką, todėl sistema neturėtų siųsti pagrindinio įvykio į vartotojo programą.

300 ms kelių paspaudimų skirtojo laiko reikšmė išsaugoma saugiame nustatyme "multi_press_timeout" kaip parodyta žemiau.

/**
* The duration in milliseconds between the first tap's up event and the second tap's
* down event for an interaction to be considered part of the same multi-press.
* @hide
*/
publicstaticfinal String MULTI_PRESS_TIMEOUT = "multi_press_timeout";

Pagal numatytuosius nustatymus ši vertė nustatyta į 300 ms.

/**
* Defines the default duration in milliseconds between the first tap's up event and the second
* tap's down event for an interaction to be considered part of the same multi-press.
*/
privatestaticfinalint DEFAULT_MULTI_PRESS_TIMEOUT = 300

Tada, jei iš tikrųjų aptinkamas daugkartinis paspaudimas (>1 atgal mygtukas paspaudžiamas aukštyn/žemyn per 300 ms), sistema iškviečia backMultiPressAction būdas nustatyti, kokių veiksmų imtis. Galiausiai mygtuko „Atgal“ skaitiklis iš naujo nustatomas į 0.

Nors tai labai nedidelė, neviešinama funkcija, vis tiek malonu pamatyti, ką „Google“ dirba užkulisiuose, kad „Android“ būtų saugesnė paprastam vartotojui.