package Ġcom . bug sn ag . android . ma zer un ner Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Log Ċ import Ġcom . bug sn ag . android . Bug sn ag Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġkotlin . concurrent . thread Ċ Ċ fun ĠApplication . trigger Startup An r If Required () Ġ{ ĊĠĠĠ Ġval Ġprefs Ġ= Ġget SharedPreferences (" An r Preferences ", ĠContext . MODE _ PRIVATE ) ĊĠĠĠ Ġval Ġstartup Delay Ġ= Ġprefs . getLong (" onCreate Delay ", Ġ 0 ) ĊĊĠĠĠ Ġif Ġ( startup Delay Ġ> Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġwe Ġremove Ġthe Ġpreference Ġso Ġthat Ġwe Ġdon 't Ġaffect Ġany Ġfuture Ġstartup ĊĠĠĠĠĠĠĠ Ġprefs . edit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. remove (" onCreate Delay ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĊĠĠĠĠĠĠĠ Ġ// Ġwe Ġhave Ġto Ġstartup ĠBug sn ag Ġat Ġthis Ġpoint ĊĠĠĠĠĠĠĠ ĠBug sn ag . start ( this ) ĊĊĠĠĠĠĠĠĠ Ġthread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġis Ġa Ġdirty Ġhack Ġto Ġwork Ġaround Ġthe Ġlimitations Ġof Ġour Ġcurrent Ġtesting ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsystems Ġ- Ġwhere Ġexternal Ġkey - events Ġare Ġpushed Ġthrough Ġour Ġmain Ġthread Ġ( which Ġwe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġare Ġpa using Ġto Ġtest Ġfor ĠAN Rs ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġthere Ġis Ġa Ġstartup Ġdelay , Ġwe Ġassume Ġwe Ġare Ġtesting ĠAN Rs Ġand Ġsend Ġa Ġ" BACK " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġkey - press Ġfrom Ġthe Ġ* system * Ġin Ġan Ġattempt Ġto Ġcause Ġan ĠAN R ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( TimeUnit . SECONDS . to Millis ( 1 L )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRuntime . get Runtime () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. exec (" input Ġkey event Ġ 4 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. waitFor () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w (" Startup AN R ", Ġ" Couldn 't Ġsend Ġkey event Ġfor ĠBACK ", Ġex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠThread . sleep ( TimeUnit . SECONDS . to Millis ( startup Delay )) ĊĠĠĠ Ġ} Ċ } Ċ