package Ġcom . ex y ui . android . debug bot tle . components Ċ Ċ import Ġandroid . app .* Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . drawable . Bitmap Drawable Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . os . Build Ċ import Ġcom . squareup . leak can ary . Leak Can ary Ċ import Ġcom . ex y ui . android . debug bot tle . ui . Block Can ary Ċ import Ġcom . ex y ui . android . debug bot tle . ui . Block Can ary Context Ċ Ċ import Ġandroid . os . Build . VERSION . SDK _ INT Ċ import Ġandroid . os . Build . VERSION _ CODES . GING ER B READ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Process Ċ import Ġandroid . os . Strict Mode Ċ import Ġandroid . support . annotation . Drawable Res Ċ import Ġandroid . support . annotation . Id Res Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . Toast Ċ import Ġcom . ex y ui . android . debug bot tle . components . crash . DT Crash Handler Ċ import Ġcom . ex y ui . android . debug bot tle . components . injector . Injector Ċ import Ġcom . ex y ui . android . debug bot tle . components . okhttp . Logging Interceptor 3 Ċ import Ġcom . ex y ui . android . debug bot tle . components . okhttp . OK _ HTTP _ CLIENT _ 3 _ CLASS Ċ import Ġcom . ex y ui . android . debug bot tle . components . okhttp . Ok Http Loader Ċ import Ġcom . ex y ui . android . debug bot tle . components . testing . Mon key Exclude Activities Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġy ur iel Ġon Ġ 8 / 1 0 / 1 6 . Ċ Ġ* ĠContext Ġclass Ġof Ġdebug Ġbottle , Ġalso Ġentry Ġof Ġdebug Ġbottle . Ċ Ġ*/ Ċ @ Suppress (" unused ") Ċ object ĠDT Installer Ġ: ĠApplication . Activity Lifecycle Callbacks Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġinstalled : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġenabled Ġ= Ġtrue ĊĠĠĠ Ġ// private Ġvar Ġnotification : ĠNotification ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval ĠNOT IFICATION _ ID Ġ= Ġ 1 2 0 3 0 ĊĠĠĠ Ġ@ Drawable Res Ġprivate Ġvar Ġnotification Icon Res : ĠInt ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġnotification Title : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġnotification Message : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġblock Can ary : ĠBlock Can ary Context ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! installed ) Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġinjector : ĠInject or ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! installed ) Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar ĠhttpClient : ĠAny ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! installed ) Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġok Http 3 Interceptor : ĠAny ? Ġ= Ġnull ĊĊĠĠĠ Ġinternal Ġvar Ġapp : ĠApplication ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! installed ) Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġvar Ġinjector ClassName : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( activity : ĠActivity , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( DT Settings . monkey Black list ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMon key Exclude Activities . activity Started ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Started ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( DT Settings . monkey Black list ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMon key Exclude Activities . activity Started ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Res umed ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ ĠDT Activity Manager . top Activity Ġ= Ġactivity ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Paused ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( DT Activity Manager . top Activity Ġ== Ġactivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDT Activity Manager . top Activity Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Stopped ( activity : ĠActivity ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Save InstanceState ( activity : ĠActivity , Ġout State : ĠBundle ?) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Destroyed ( activity : ĠActivity ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static Ġfun Ġinstall ( app : ĠApplication ): ĠDT Installer Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . app Ġ= Ġapp ĊĠĠĠĠĠĠĠ ĠMon key Exclude Activities . init ( app ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Block Can ary ( context : ĠBlock Can ary Context ): ĠDT Installer Ġ{ ĊĠĠĠĠĠĠĠ Ġblock Can ary Ġ= Ġcontext ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Injector ( injector : ĠInject or ): ĠDT Installer Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . injector Ġ= Ġinjector ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġinjector : ĠThe Ġpackage Ġname Ġof Ġinjector Ġclass ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Injector ( injector : ĠString ): ĠDT Installer Ġ{ ĊĠĠĠĠĠĠĠ Ġinjector ClassName Ġ= Ġinjector ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinjector Class Ġ= ĠClass . forName ( injector ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . injector Ġ= Ġinjector Class . newInstance () Ġas ĠInject or ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Ok HttpClient ( client : ĠAny ): ĠDT Installer Ġ{ ĊĠĠĠĠĠĠĠ ĠhttpClient Ġ= Ġclient ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Http Log Path ( path : ĠString ): ĠDT Installer Ġ{ ĊĠĠĠĠĠĠĠ ĠDT Settings . http File Store Path Ġ= Ġpath ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Crash Log Path ( path : ĠString ): ĠDT Installer Ġ{ ĊĠĠĠĠĠĠĠ ĠDT Settings . crash File Store Path Ġ= Ġpath ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Notification Icon (@ Drawable Res Ġid : ĠInt ): ĠDT Installer Ġ{ ĊĠĠĠĠĠĠĠ Ġnotification Icon Res Ġ= Ġid ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Notification Title ( title : ĠString ): ĠDT Installer Ġ{ ĊĠĠĠĠĠĠĠ Ġnotification Title Ġ= Ġtitle ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Notification Message ( message : ĠString ): ĠDT Installer Ġ{ ĊĠĠĠĠĠĠĠ Ġnotification Message Ġ= Ġmessage ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġenable (): ĠDT Installer Ġ{ ĊĠĠĠĠĠĠĠ Ġenabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdisable (): ĠDT Installer Ġ{ ĊĠĠĠĠĠĠĠ Ġenabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠ ĠRunning Feature Mgr . clear () ĊĠĠĠĠĠĠĠ Ġif (! DT Settings . bot tle Enable Ġ&& Ġenabled ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ ĠRunning Feature Mgr . add ( Running Feature Mgr . DEBUG _ BOT TLE ) ĊĠĠĠĠĠĠĠ Ġinstalled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( null Ġ!= Ġblock Can ary ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġblock Can ary Ġ= ĠBlock Can ary . install ( block Can ary !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( DT Settings . block Can ary Enable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock Can ary . start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRunning Feature Mgr . add ( Running Feature Mgr . BLOCK _ CAN ARY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock Can ary . stop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRunning Feature Mgr . remove ( Running Feature Mgr . BLOCK _ CAN ARY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( null Ġ!= Ġapp ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( DT Settings . strict Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenable Strict Mode () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRunning Feature Mgr . add ( Running Feature Mgr . STRICT _ MODE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRunning Feature Mgr . remove ( Running Feature Mgr . STRICT _ MODE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( DT Settings . leak Can ary Enable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLe ak Can ary . install ( app ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRunning Feature Mgr . add ( Running Feature Mgr . LE AK _ CAN ARY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRunning Feature Mgr . remove ( Running Feature Mgr . LE AK _ CAN ARY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Notification ( app !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Activity Lifecycle Callbacks ( app !! ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( app ?. is System Alert Permission Granted () ?: Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp ?. run Bubble Service () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( null Ġ!= ĠhttpClient ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOk Http Loader . load ( httpClient ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDT Settings . network Sn iff ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠD TC r ash Handler . install () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Ok Http 3 Interceptor (): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClass . forName ( OK _ HTTP _ CLIENT _ 3 _ CLASS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( null Ġ== Ġok Http 3 Interceptor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġok Http 3 Interceptor Ġ= ĠLogging Interceptor 3 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġok Http 3 Interceptor ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġstart Inject (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( null Ġ!= Ġinjector ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinjector ?. inject () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġstart Testing Environment (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( null Ġ!= Ġinjector ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinjector ?. before Mon key Test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Notification Display ( display : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( display ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Notification ( app !! ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Notify Mgr Ġ= Ġapp ?. getSystem Service ( Service . NOTIFICATION _ SERVICE ) Ġas ĠNotification Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Notify Mgr . cancel ( NOTIFICATION _ ID ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġenable Strict Mode () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( SDK _ INT Ġ>= ĠG ING ER B READ ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStrict Mode . set Thread Policy ( Strict Mode . Thread Policy . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. detect All () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. penalty Log () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. penalty Death () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStrict Mode . set Vm Policy ( Strict Mode . Vm Policy . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. detect Le aked Sql Lite Objects () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. detect Le aked C losable Objects () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. penalty Log () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. penalty Death () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ Ġprivate Ġfun Ġshow Notification ( app : ĠApplication ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// val Ġview Ġ= ĠRemote Views ( app . packageName , ĠR . layout .__ notification _ main ) ĊĠĠĠĠĠĠĠ Ġ// view . setText View Text ( R . id . notify _ title , Ġ" start ") ĊĊĊĠĠĠĠĠĠĠ Ġ// val Ġpi Ġ= ĠPending Intent . getActivity ( app , Ġ 0 , ĠIntent ( app , Ġ__ On Notification Receiver :: class . java ), ĠPending Intent . FLAG _ UPDATE _ CURRENT ) ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( app , Ġ__ On Notification Receiver :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġpi Ġ= ĠPending Intent . get Broadcast ( app , Ġ 1 , Ġintent , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġnotification : ĠNotification ĊĠĠĠĠĠĠĠ Ġval Ġnotify Ġ= ĠNotification . Builder ( app ) ĊĠĠĠĠĠĠĠ Ġif Ġ( null Ġ== Ġnotification Icon Res ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify . set Small Icon ( R . drawable .__ dt _ notification _ bt ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify . set Small Icon ( notification Icon Res !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Large Icon ( getApp Icon ()?. to Bitmap ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( null Ġ== Ġnotification Title ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify . setContent Title (" Debug ĠBot tle ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify . setContent Title ( notification Title !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( null Ġ== Ġnotification Message ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify . setContent Text (" Running Ġwith Ġ${ app . packageName . split (". "). last ()}. ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify . setContent Text ( notification Message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Ticker (" debug Ġtool ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Intent ( pi ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set O ngo ing ( true ) ĊĠĠĠĠĠĠĠ Ġif Ġ( SDK _ INT Ġ< ĠBuild . VERSION _ CODES . J EL LY _ BE AN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Ġ= Ġnotify . notification ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Ġ= Ġnotify . build () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġm Notify Mgr Ġ= Ġapp . getSystem Service ( Service . NOTIFICATION _ SERVICE ) Ġas ĠNotification Manager ĊĠĠĠĠĠĠĠ Ġm Notify Mgr . notify ( NOTIFICATION _ ID , Ġnotification ) ĊĠĠĠĠĠĠĠ ĠLog . d ( java Class . simple Name , Ġ" started ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġregister Activity Lifecycle Callbacks ( app : ĠApplication ) Ġ{ ĊĠĠĠĠĠĠĠ Ġapp . register Activity Lifecycle Callbacks ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġkill () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠ Ġintent . add Flags ( Intent . FLAG _ ACTIVITY _ CLEAR _ TOP ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDT Activity Manager . top Activity ?. startActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠToast . makeText ( app , ĠR . string .__ dt _ kill _ success , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ ĠProcess . kill Process ( Process . my Pid ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġget SP ( fileName : ĠString ): ĠSharedPreferences ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġapp ?. get SharedPreferences ( fileName , ĠContext . MODE _ PRIVATE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġget Application () Ġ= Ġapp ĊĊĠĠĠ Ġinternal Ġfun ĠgetString (@ Id Res Ġid : ĠInt ) Ġ= Ġapp ?. getString ( id ) ĊĊĠĠĠ Ġinternal Ġfun Ġget App Icon () Ġ= Ġapp ?. application Info ?. load Icon ( app ?. package Manager ) ĊĊĠĠĠ Ġinternal Ġfun ĠDrawable . to Bitmap (): ĠBitmap Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbitmap : ĠBitmap ? ĊĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġis ĠBitmap Drawable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Drawable Ġ= Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap Drawable . bitmap ?. let Ġ{ Ġreturn Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( intrinsic Width Ġ<= Ġ 0 Ġ|| Ġintr insic Height Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap Ġ= ĠBitmap . create Bitmap ( 1 , Ġ 1 , ĠBitmap . Config . ARGB _ 8 8 8 8 ) Ġ// ĠSingle Ġcolor Ġbitmap Ġwill Ġbe Ġcreated Ġof Ġ 1 x 1 Ġpixel ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap Ġ= ĠBitmap . create Bitmap ( intrinsic Width , Ġintr insic Height , ĠBitmap . Config . ARGB _ 8 8 8 8 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcanvas Ġ= ĠCanvas ( bitmap ) ĊĠĠĠĠĠĠĠ Ġset Bounds ( 0 , Ġ 0 , Ġcanvas . width , Ġcanvas . height ) ĊĠĠĠĠĠĠĠ Ġdraw ( canvas ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbitmap ĊĠĠĠ Ġ} Ċ }