Operētājsistēmā Android 7.1+ ir "Panic Detection" režīms, kas nosaka izmisīgus pogas Atpakaļ nospiešanu

Android Nougat (7.1+) ir panikas noteikšanas režīms, kas nosaka, vai lietotājs izmisīgi nospiež atpakaļ pogu. Lasiet vairāk, lai uzzinātu, ko tas dara.

Lai gan daudzi uz Android orientētu vietņu, piemēram, mūsu vietņu, lasītāji retāk saskarsies Situācijās, kad negodīga lietojumprogramma apdraud viņu sistēmu, tas pats var neattiekties uz vispārējo populācija. Gandrīz katru nedēļu mēs dzirdam no dažādiem drošības pētniekiem par jaunu ļaunprātīgu programmatūru, kas paredzēta Android lietotājiem. Lielāko daļu no šiem ļaunprātīgajiem uzbrukumiem var izvairīties, pārbaudot atļaujas vai izvairoties no neviennozīmīga izskata lietojumprogrammu instalēšanas, un Lai gan mēs iesakām saviem lasītājiem uzņemties tālruņa drošību savās rokās, Google ir atbildīgs par katras Android ierīces drošību tālrunis. Šim nolūkam uzņēmums klusi ieviesa jaunu drošības līdzekli operētājsistēmā Android 7.1 Nougat ar nosaukumu "panikas noteikšana", kas noklausās vairākus secīgus pogas Atpakaļ nospiešanu, pēc tam atgriež lietotāju uz sākuma ekrānu.

Gluži vienkārši, ja negodīga lietojumprogramma mēģina nolaupīt lietotāja ekrānu un neļaut lietotājam atstāt (iespējams, ieviešot pieejamības pakalpojumu, lai pārtvertu visus galvenos notikumus), Android pati ignorēs lietojumprogrammu, lai atgrieztu sākuma ekrāns. Pēc tam lietotājs, iespējams, var atinstalēt ļaunprātīgo lietojumprogrammu no palaišanas programmas.

Šī funkcija palika zem radara, jo tas ir saprotams, jo Google, visticamāk, nevēlētos reklamēt pasaulei tādā veidā, kā viņi iznīcina ļaunprātīgas lietojumprogrammas. Taču īss Android atvērtā pirmkoda apskats atklāj, kā šī vienkāršā funkcija darbojas ierīcēs, kas to atbalsta.


Kodeksa pārbaude

Pirmkārt, tas, ka jūsu ierīcē darbojas operētājsistēma Android 7.1+, nenozīmē, ka šī panikas noteikšanas darbība patiešām ir iespējota. Vērtību, kas nosaka, vai līdzeklis ir ieslēgts, var atrast config.xml failu SystemUI APK.


<integername="config_backPanicBehavior">0integer>

Pēc noklusējuma Android reakcija uz panikas pogas Atpakaļ nospiešanu ir nedarīt neko. Ja vesela skaitļa vērtība config_backPanicBehavior ir iestatīts uz 1, tomēr šeit tiek ieviests jaunais Android aizsardzības pasākums.

Iekšā PhoneWindowManager.java mēs varam redzēt lielāko daļu no tā, kā šī funkcija tiek ieviesta. Pirmkārt, fails nosaka divas lietas: cik reizes ir jānospiež poga Atpakaļ, lai sistēma noteiktu, ka lietotājs ir "panikā", un pēc tam, kāda darbība jāveic, pamatojoties uz šo stāvokli.

// 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;

Pēc noklusējuma sistēma pieprasa 4 secīgus atpakaļ pogas nospiešanu, lai pārietu uz panikas režīmu. Neatkarīgi no tā, vai funkcija izmanto veselu skaitļa vērtību PANIC_PRESS_BACK_NOTHING vai PANIC_PRESS_BACK_HOME nosaka vērtība SystemUI APK konfigurācijas failā.

Neatkarīgi no šīs vērtības tiek pārbaudīts, vai tas tiks uzskatīts par panikas nospiešanu. Pirmkārt, sistēma pārtver lejupvērsto nospiešanu KEYCODE_BACK taustiņa notikums un pārbauda, ​​vai sistēma ir iestatīta, lai pārbaudītu, vai nav nospiests taustiņš vairākkārt vai ilgstoši nospiests. Pēc tam sistēma pārbauda, ​​vai tā paša KEYCODE_BACK atslēgas notikuma nospiešana uz augšu ir jānodod lietotāja lietotnei.

Iekš interceptBackKeyDown() metodi, ja atpakaļ taustiņu nospiešanas skaitītājs ir no 1 līdz 3, sistēma izlaiž vairāku nospiešanas noteikšanas taimautu, jo panikas noteikšanai ir nepieciešami vismaz 4 nospiešanas gadījumi, lai veiktu jebkuru darbību.

Pēc tam, kad lietotājs noņem pirkstu no taustiņa Atpakaļ, kas aktivizē notikumu augšup, interceptBackKeyUp pievieno 1 aizmugures taustiņu skaitītājam. Pēc tam tas ievieto ziņojumu rindā uz 300 milisekundēm nākotnē. Iemesls tam ir tāpēc, ka sistēma rezervē 300 milisekundes aizkaves periodu, lemjot, vai pogas Atpakaļ nospiešana ir daļa no vairāku nospiešanas notikuma. Ja tā ir, iespējams, lietotājs panikā nospiež pogu, tāpēc sistēmai nevajadzētu nosūtīt galveno notikumu lietotāja lietojumprogrammai.

300 ms vairāku nospiešanas taimauta vērtība tiek saglabāta drošajā iestatījumā.multi_press_timeout", kā parādīts zemāk.

/**
* 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";

Pēc noklusējuma šī vērtība ir iestatīta uz 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

Pēc tam, ja patiešām tiek konstatēta vairākkārtēja nospiešana (>1 poga atpakaļ tiek pilnībā nospiesta uz augšu/uz leju 300 ms laikā), sistēma izsauc backMultiPressAction metode, kā noteikt, kāda darbība jāveic. Visbeidzot, pogas Atpakaļ skaitītājs tiek atiestatīts uz 0.

Lai gan tā ir ļoti neliela, nepublicēta funkcija, joprojām ir patīkami redzēt, pie kā Google strādā aizkulisēs, lai padarītu Android drošāku vidusmēra lietotājam.