package Ġcom . ar jan v lek . oxy gen updater . utils Ċ Ċ import Ġandroid . os . AsyncTask Ċ import Ġcom . ar jan v lek . oxy gen updater . internal . Kotlin Callback Ċ import Ġcom . ar jan v lek . oxy gen updater . utils . Logger . log Error Ċ import Ġeu . chain fire . lib superuser . Shell Ċ Ċ object ĠRoot Access Checker Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġhas Checked Once Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġis Root ed Ġ= Ġfalse ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChecks Ġif Ġthe Ġdevice Ġis Ġroot ed . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠCallback Ġgets Ġas Ġargument Ġwhether Ġor Ġnot Ġthe Ġdevice Ġis Ġroot ed . ĠThe Ġresult Ġof Ġ[ Shell . SU . available ] Ġis Ġcached . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcheck Root Access ( callback : ĠKotlin Callback < Boolean >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( has Checked Once ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . invoke ( is Root ed ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRoot Checker Impl ( callback ). execute () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠRoot Checker Impl Ġinternal Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcallback : ĠKotlin Callback < Boolean > ĊĠĠĠ Ġ) Ġ: ĠAsync Task < Void ?, ĠVoid ?, ĠBoolean >() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdo In Background ( var arg Ġparams : ĠVoid ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 2 0 0 0 ) Ġ// ĠGive Ġthe Ġuser Ġthe Ġtime Ġto Ġread Ġwhat 's Ġhappening . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShell . SU . available () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Error (" Application Data ", Ġ" Failed Ġto Ġcheck Ġfor Ġroot Ġaccess ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Post Execute ( result : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Checked Once Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Root ed Ġ= Ġresult ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . invoke ( is Root ed ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ