Android Nougat (7.1+) má režim detekcie paniky, ktorý rozpozná, či používateľ horúčkovito stláča tlačidlo späť. Prečítajte si viac, aby ste počuli, čo robí.
Zatiaľ čo mnohí čitatelia webových stránok zameraných na Android, ako je tá naša, sa s nimi nestretnú v situáciách, keď nečestná aplikácia ohrozí ich systém, to isté nemusí platiť pre generála populácia. Takmer každý týždeň počúvame od rôznych bezpečnostných výskumníkov o novom malvéri zacielenom na používateľov systému Android. Väčšine z týchto škodlivých útokov sa dá predísť kontrolou povolení alebo vyhýbaním sa inštalácii útržkovitých aplikácií a aj keď našim čitateľom odporúčame, aby vzali bezpečnosť svojho telefónu do vlastných rúk, Google je zodpovedný za zabezpečenie každého Androidu telefón. Na tento účel spoločnosť v tichosti predstavila novú bezpečnostnú funkciu v systéme Android 7.1 Nougat s názvom „detekcia paniky“, ktorý počúva na viacnásobné stlačenie tlačidla Späť za sebou a potom používateľa vráti na jeho domovskú obrazovku.
Jednoducho, ak sa nečestné aplikácie pokúsia uniesť obrazovku používateľa a zabrániť používateľovi v odchode (možno implementáciou služby prístupnosti na zachytenie všetkých kľúčových udalostí), Android sám prepíše aplikáciu, aby obnovil Domovská obrazovka. Používateľ potom môže pravdepodobne odinštalovať škodlivú aplikáciu zo spúšťača.
Táto funkcia preletela pod radarom, pochopiteľne, pretože Google by pravdepodobne nechcel svetu propagovať jeden zo spôsobov, ako ničia škodlivé aplikácie. Ale rýchly pohľad na otvorený zdrojový kód Androidu odhalí, ako táto jednoduchá funkcia funguje na zariadeniach, ktoré ju podporujú.
Skúmanie Kódexu
Po prvé, to, že vaše zariadenie používa systém Android 7.1 alebo novší, neznamená, že toto správanie zisťovania paniky je skutočne povolené. Hodnotu, ktorá určuje, či je funkcia zapnutá, nájdete v config.xml
súbor v súbore SystemUI APK.
<integername="config_backPanicBehavior">0integer>
V predvolenom nastavení je reakcia Androidu na panické stlačenie tlačidla Späť nič nerobenie. Ak je celočíselná hodnota config_backPanicBehavior
je nastavená na 1, avšak práve tu začína nové ochranné opatrenie systému Android.
Vnútri PhoneWindowManager.java
môžeme vidieť väčšinu toho, ako je táto funkcia implementovaná. Po prvé, súbor definuje dve veci: koľko stlačení tlačidla späť je potrebných na to, aby systém zistil, že používateľ „panikári“ a potom, akú akciu vykonať na základe tohto stavu.
// 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;
V predvolenom nastavení systém vyžaduje 4 po sebe idúce stlačenia tlačidla Späť, aby sa dostal do režimu paniky. Či funkcia používa celočíselnú hodnotu alebo nie PANIC_PRESS_BACK_NOTHING
alebo PANIC_PRESS_BACK_HOME
je určená hodnotou v konfiguračnom súbore v rámci SystemUI APK.
Bez ohľadu na túto hodnotu sa skontroluje každé viacnásobné stlačenie tlačidla späť, aby sa zistilo, či sa bude počítať ako stlačenie paniky. Najprv systém zachytí stlačenie nadol KEYCODE_BACK kľúčovú udalosť a skontroluje, či je systém nastavený na kontrolu viacnásobných alebo dlhých stlačení tlačidla. Potom systém skontroluje, či má alebo nemá odovzdať stlačenie nahor pre rovnakú kľúčovú udalosť KEYCODE_BACK do používateľskej aplikácie.
V interceptBackKeyDown()
Ak je počítadlo stlačenia klávesu Späť medzi 1 a 3, potom systém preskočí časový limit detekcie viacerých stlačení, pretože detekcia paniky vyžaduje aspoň 4 stlačenia na vykonanie akejkoľvek akcie.
Potom, keď používateľ stiahne prst z klávesu Späť, čím sa spustí udalosť up, interceptBackKeyUp
pridá 1 k počítadlu spätného kľúča. Potom zaradí správu do frontu na 300 milisekúnd v budúcnosti. Dôvodom je to, že systém si vyhradzuje 300 milisekúndové oneskorenie pri rozhodovaní, či sú stlačenia tlačidla späť súčasťou viacnásobného stlačenia. Ak je, potom môže byť používateľ stlačený tlačidlom v panike, takže systém by nemal odosielať kľúčovú udalosť do používateľskej aplikácie.
Hodnota časového limitu 300 ms pre viacnásobné stlačenie je uložená v zabezpečenom nastavení "multi_press_timeout
" ako je ukázané nižšie.
/**
* 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";
Štandardne je táto hodnota nastavená na 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
Potom, ak sa skutočne zistí viacnásobné stlačenie (>1 tlačidlo späť dokončí stlačenie hore/dole do 300 ms), systém zavolá backMultiPressAction
spôsob, ako určiť, aké kroky podniknúť. Nakoniec sa počítadlo tlačidla späť vynuluje na 0.
Aj keď je to veľmi malá, nepublikovaná funkcia, stále je pekné vidieť, na čom Google v zákulisí pracuje, aby bol Android pre bežného používateľa bezpečnejší.