package Ġcom . the wiz rd . we ar settings Ċ Ċ import Ġandroid . content . Component Name Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Power Manager Ċ import Ġandroid . provider . Settings Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġcom . the wiz rd . we ar settings . actions . check Secure Settings Permission Ċ import Ġcom . the wiz rd . we ar settings . databinding . Activity Main Binding Ċ import Ġcom . the wiz rd . we ar settings . root . Root Helper Ċ import Ġkotlinx . coroutines . launch Ċ import Ġcom . the wiz rd . we ar settings . Settings Ġas ĠSettings Helper Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Main Binding ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Power Mgr : ĠPower Manager ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġm Power Mgr Ġ= Ġget System Service ( Power Manager :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠActivity Main Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĊĠĠĠĠĠĠĠ Ġbinding . b go pts Pref . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! m Power Mgr . is Ign oring Battery Optim izations ( this . packageName )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Catch ing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( Settings . ACTION _ REQUEST _ IGNORE _ B ATTER Y _ OPTIMI Z ATIONS ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= ĠUri . parse (" package :${ packageName }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Catch ing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( Settings . ACTION _ IGNORE _ B ATTER Y _ OPTIMI Z ATION _ SETTINGS )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . secure settings Pref . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! check Secure Settings Permission ( this )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠShow Ġa Ġdialog Ġdetail ing Ġhow Ġto Ġset Ġthis Ġpermission ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( Intent . ACTION _ VIEW ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= ĠUri . parse ( getString ( R . string . url _ secure _ settings _ help )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . root access Pref . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRoot Ġshell Ġaccess Ġshould Ġrun Ġoff Ġmain Ġthread ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Settings Helper . is Root Access Enabled ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRequest Ġroot Ġpermission ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Root Helper . is Root Enabled ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠShow Ġdialog Ġabout Ġroot Ġaccess ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( Intent . ACTION _ VIEW ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= ĠUri . parse ( getString ( R . string . url _ root _ access _ help )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSettings Helper . set Root Access Enabled ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Root Access Pref ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSettings Helper . set Root Access Enabled ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Root Access Pref ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . hide launcher Pref . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstate Ġ= Ġ! is Launcher Icon Enabled () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Launcher Icon Enabled ( state ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Hide Launcher Pref ( state ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . Q ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . hide launcher Pref . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĊĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Bg Opts Pref ( m Power Mgr . is Ign oring Battery Optim izations ( packageName )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Hide Launcher Pref ( is Launcher Icon Enabled ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroot Enabled Ġ= ĠSettings Helper . is Root Access Enabled () Ġ&& ĠRoot Helper . is Root Enabled () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Secure Settings Pref ( check Secure Settings Permission ( this @ MainActivity ) Ġ|| Ġroot Enabled ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Root Access Pref ( root Enabled ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Bg Opts Pref ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . b go pts Pref Summary . setText ( if Ġ( enabled ) ĠR . string . message _ b go pts _ enabled Ġelse ĠR . string . message _ b go pts _ disabled ) ĊĠĠĠĠĠĠĠ Ġbinding . b go pts Pref Summary . setTextColor ( if Ġ( enabled ) ĠColor . GREEN Ġelse ĠColor . RED ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Secure Settings Pref ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . secure settings Pref Summary . setText ( if Ġ( enabled ) ĠR . string . message _ secure settings _ enabled Ġelse ĠR . string . message _ secure settings _ disabled ) ĊĠĠĠĠĠĠĠ Ġbinding . secure settings Pref Summary . setTextColor ( if Ġ( enabled ) ĠColor . GREEN Ġelse ĠColor . RED ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Root Access Pref ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . root access Pref Summary . setText ( if Ġ( enabled ) ĠR . string . message _ root access _ enabled Ġelse ĠR . string . message _ root access _ disabled ) ĊĠĠĠĠĠĠĠ Ġbinding . root access Pref Toggle . isChecked Ġ= Ġenabled ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Hide Launcher Pref ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . hide launcher Pref Toggle . isChecked Ġ= Ġenabled ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Launcher Icon Enabled (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcomponent State Ġ= Ġpackage Manager . getComponent Enabled Setting ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠComponent Name ( this , ĠLaunch er Activity :: class . java ), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġcomponent State Ġ== ĠPackage Manager . COMPONENT _ ENABLED _ STATE _ ENABLED Ġ|| Ġcomponent State Ġ== ĠPackage Manager . COMPONENT _ ENABLED _ STATE _ DEFAULT ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Launcher Icon Enabled ( enable : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpackage Manager . set Component Enabled Setting ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠComponent Name ( this , ĠLaunch er Activity :: class . java ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( enable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPackage Manager . COMPONENT _ ENABLED _ STATE _ ENABLED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPackage Manager . COMPONENT _ ENABLED _ STATE _ DISABLED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPackage Manager . D ONT _ KILL _ APP ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }