/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 . Ċ Ġ* ĠCreated Ġby ĠJ os ua ĠL eng wen ath Ċ Ġ*/ Ċ Ċ package Ġcom . der typ 7 2 1 4 . app store Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . animation . Argb Evaluator Ċ import Ġandroid . animation . Value Animator Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . content . pm . Application Info Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . graphics .* Ċ import Ġandroid . graphics . drawable . Bitmap Drawable Ċ import Ġandroid . graphics . drawable . Color Drawable Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Environment Ċ import Ġandroid . os . Looper Ċ import Ġandroid . text . Html Ċ import Ġandroid . util . Base 6 4 Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . annotation . Color Int Ċ import Ġandroidx . annotation . Drawable Res Ċ import Ġandroidx . appcompat . app . ActionBar Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . content . File Provider Ċ import Ġandroidx . core . graphics . drawable . Drawable Compat Ċ import Ġcom . der typ 7 2 1 4 . app store . Config . API _ URL Ċ import Ġcom . der typ 7 2 1 4 . app store . Config . UID Ċ import Ġcom . der typ 7 2 1 4 . app store . components . Custom AppBar Layout Ċ import Ġcom . der typ 7 2 1 4 . app store . components . Custom Toolbar Ċ import Ġcom . der typ 7 2 1 4 . app store . dev . Logs Ċ import Ġcom . der typ 7 2 1 4 . app store . items . Search Item Ċ import Ġcom . der typ 7 2 1 4 . app store . re ceiv ers . Package Update Receiver Ċ import Ġcom . der typ 7 2 1 4 . app store . screens . MainActivity Ċ import Ġcom . der typ 7 2 1 4 . change logs . Change Log Ċ import Ġcom . der typ 7 2 1 4 . change logs . Version Ċ import Ġcom . der typ 7 2 1 4 . theme able components . utils . Theme Manager Ċ import Ġcom . gw . swipe back . Swipe Back Layout Ċ import Ġcom . gw . swipe back . Wx Swipe Back Layout Ċ import Ġcom . gw . swipe back . tools . Util Ċ import Ġorg . json . JSONObject Ċ import Ġjava . io .* Ċ import Ġjava . net .* Ċ import Ġjava . util .* Ċ import Ġjava . util . regex . Pattern Ċ Ċ @ Suppress (" DE PREC ATION ", Ġ" UN CHECK ED _ CAST ", Ġ" NAME _ SH ADO WING ") Ċ @ Suppress Lint (" Registered ") Ċ abstract Ġclass ĠUtils Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġvar Ġtoolbar : ĠCustom Toolbar ? Ġ= Ġnull ĊĠĠĠ Ġopen Ġlateinit Ġvar Ġlogs : ĠLogs ĊĠĠĠ Ġprotected Ġvar ĠPER MISSION S Ġ= Ġ 1 0 ĊĠĠĠ Ġprotected Ġvar Ġold App PackageName Ġ= Ġ" com . hack er . app store " ĊĠĠĠ Ġprotected Ġopen Ġvar Ġtheme Store : ĠTheme Store ? Ġ= Ġnull ĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġtheme Manager : ĠTheme Manager ĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġwx Swipe Back Layout : ĠW x Swipe Back Layout ĊĠĠĠ Ġprivate Ġvar Ġstatus Color Ġ= Ġ- 1 ĊĠĠĠ Ġprivate Ġvar Ġcallback : ĠCallback ? Ġ= Ġnull ĊĊĠĠĠ Ġval Ġstatus Bar Height : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresource Id Ġ= Ġresources . getIdentifier (" status _ bar _ height ", Ġ" dim en ", Ġ" android ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( resourceId Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġresources . get Dimension Pixel Size ( resourceId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġnavigation Bar Height : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresource Id Ġ= Ġresources . getIdentifier (" navigation _ bar _ height ", Ġ" dim en ", Ġ" android ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( resourceId Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġresources . get Dimension Pixel Size ( resourceId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġapp Bar : ĠCustom AppBar Layout ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠfindViewById ( R . id . app _ bar ) ĊĊĠĠĠ Ġvar Ġnavigation Bar Color : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġwindow . navigation Bar Color ĊĠĠĠĠĠĠĠ Ġset (@ Color Int Ġcolor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . navigation Bar Color Ġ= Ġcolor ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġstatus Bar Color : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġwindow . status Bar Color ĊĠĠĠĠĠĠĠ Ġset (@ Color Int Ġcolor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . status Bar Color Ġ= Ġcolor ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġis Root ed : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuild Tags Ġ= Ġandroid . os . Build . TAGS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( build Tags Ġ!= Ġnull Ġ&& Ġbuild Tags . contains (" test - keys ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ("/ system / app / Super user . apk ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( run Command ("/ system / x bin / which Ġsu ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġrun Command ("/ system / bin / which Ġsu ") Ġ|| Ġrun Command (" which Ġsu ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsetContentView ( layout Res ID : ĠInt , Ġswipe : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . set ContentView ( layout Res ID ) ĊĠĠĠĠĠĠĠ Ġif Ġ( swipe ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwx Swipe Back Layout Ġ= ĠW x Swipe Back Layout ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwx Swipe Back Layout . direction Mode Ġ= ĠSw ipe Back Layout . FROM _ LEFT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwx Swipe Back Layout . attach To Activity ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwx Swipe Back Layout . set Swipe Back Listener ( object Ġ: ĠSw ipe Back Layout . On Swipe Back Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon View Position Changed ( m View : ĠView , Ġswipe Back Fraction : ĠFloat , Ġswipe Back Factor : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwx Swipe Back Layout . invalidate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUtil . on Panel Slide ( swipe Back Fraction ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( status Color Ġ== Ġ- 1 ) Ġstatus Color Ġ= Ġstatus Bar Color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Bar Color Ġ= Ġcalculate Color ( manip ulate Color ( MainActivity . color , Ġ 0 . 6 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Color , Ġ 1 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( swipe Back Fraction Ġ* Ġ 1 0 0 ). toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon View Swipe Finished ( m View : ĠView , Ġis End : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is End ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( callback Ġ!= Ġnull ) Ġcallback !!. run () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Bar Color Ġ= ĠColor . TRANSP ARENT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwx Swipe Back Layout . finish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUtil . on Panel Reset () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġset Swipe Back Callback ( callback : ĠCallback ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . callback Ġ= Ġcallback ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetContentView ( layout Res ID : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠsetContentView ( layout Res ID , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġtheme Store Ġ= ĠTheme Store . getInstance ( this ) ĊĠĠĠĠĠĠĠ Ġtheme Manager Ġ= ĠTheme Manager . getInstance ( this ) ĊĠĠĠĠĠĠĠ Ġtheme Manager . change Accent Color ( theme Store !!. accent Color ) ĊĠĠĠĠĠĠĠ Ġtheme Manager . change Primary Color ( this , Ġtheme Store !!. primary Color , Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBuild . VERSION . SDK _ INT Ġ< ĠBuild . VERSION _ CODES . P , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġrain bow ( this ) ĊĠĠĠĠĠĠĠ Ġif Ġ( Package Update Receiver . activity Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPackage Update Receiver . activity Ġ= Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġapply Theme () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtheme Store Ġ= ĠTheme Store . getInstance ( this ) ĊĠĠĠĠĠĠĠ Ġstatus Bar Color Ġ= Ġtheme Store !!. primary Dark Color ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ< Ġ 2 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset NavigationBar Color ( this , Ġwindow . decor View , Ġtheme Store . primary Color , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 0 0 ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset NavigationBar Color ( this , Ġwindow . decor View , ĠColor . WHITE , Ġ 3 0 0 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( toolbar Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar !!. set BackgroundColor ( theme Store . primary Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar !!. set Toolbar Icon Color ( theme Store . primary Color ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠObjects . requireNonNull < ActionBar >( support ActionBar ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setBackground Drawable ( Color Drawable ( theme Store . primary Color )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport ActionBar !!. title Ġ= ĠHtml . from Html ("< font Ġcolor ='" Ġ+ ĠString . format ("# % 0 6 X ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x FFFFFF Ġand Ġtheme Store ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. primary TextColor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ+ Ġ" '>" Ġ+ Ġsupport ActionBar !!. title Ġ+ Ġ"</ font >") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsleep ( duration : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( duration ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠInterruptedException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Bitmap From Resource (@ Drawable Res Ġresource : ĠInt ): ĠBitmap Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBitmap Factory . decode Resource ( resources , Ġresource ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠstartActivity ( context : ĠActivity , Ġa Class : ĠClass <* >) Ġ{ ĊĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( context , Ġa Class )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠstartActivity ( context : ĠActivity , Ġa Class : ĠClass <* >, Ġoptions : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( context , Ġa Class ), Ġoptions ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Margins ( v : ĠView , Ġl : ĠInt , Ġt : ĠInt , Ġr : ĠInt , Ġb : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( v . layout Params Ġis ĠViewGroup . Margin LayoutParams ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp Ġ= Ġv . layout Params Ġas ĠViewGroup . Margin LayoutParams ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp . set Margins ( l , Ġt , Ġr , Ġb ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv . request Layout () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcut String ( string : ĠString , Ġcut At : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( string . length Ġ< Ġcut At ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstring ĊĠĠĠĠĠĠĠ Ġval Ġret Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġcut At ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġret . append ( string [ i ]) ĊĠĠĠĠĠĠĠ Ġret . append (" ...") ĊĠĠĠĠĠĠĠ Ġreturn Ġret . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck Extra ( extra : ĠBundle ?): ĠBundle Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( extra Ġ== Ġnull ) Ġfinish () ĊĠĠĠĠĠĠĠ Ġassert ( extra Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠ Ġif Ġ( extra !!. size () Ġ> Ġ 1 ) Ġfinish () ĊĠĠĠĠĠĠĠ Ġreturn Ġextra ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġset Colors () Ġ{ ĊĠĠĠĠĠĠĠ Ġlogs Ġ= ĠLogs . getInstance ( this ) ĊĠĠĠĠĠĠĠ Ġlogs . info (" setColor ", Ġ( theme Store Ġ!= Ġnull ). toString ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( theme Store Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Bar Color Ġ= Ġtheme Store !!. primary Dark Color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar !!. set BackgroundColor ( theme Store !!. primary Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar !!. set Toolbar Icon Color ( theme Store !!. primary Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ< Ġ 2 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset NavigationBar Color ( this , Ġwindow . decor View , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtheme Store !!. primary Color , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset NavigationBar Color ( this , Ġwindow . decor View , ĠColor . WHITE , Ġ 3 0 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġset Back Button () Ġ{ ĊĠĠĠĠĠĠĠ ĠObjects . requireNonNull < ActionBar >( support ActionBar ). set Display Show Home Enabled ( true ) ĊĠĠĠĠĠĠĠ ĠObjects . requireNonNull < ActionBar >( support ActionBar ). set Display Home As Up Enabled ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck Extra Key ( extra : ĠBundle , Ġkey : ĠString ): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Extra ( extra ) ĊĠĠĠĠĠĠĠ Ġif Ġ( extra . get ( key ) Ġ== Ġnull ) Ġfinish () ĊĠĠĠĠĠĠĠ Ġreturn Ġextra . get ( key ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġread FromFile InputStream ( file InputStream : ĠFileInputStream ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġret Buf Ġ= ĠStringBuilder () ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file InputStream Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput StreamReader Ġ= ĠInputStreamReader ( file InputStream ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffered Reader Ġ= ĠBufferedReader ( input StreamReader ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġline Data : ĠString ? Ġ= Ġbuffered Reader . readLine () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( line Data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġret Buf . append ( line Data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Data Ġ= Ġbuffered Reader . readLine () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġret Buf . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< V Ġ: ĠView > Ġfind Children By Class ( clazz : ĠClass < V >, Ġvar arg Ġview Groups : ĠViewGroup ): ĠCollection < V > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠArrayList < V >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( view Group Ġin Ġview Groups ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollection . addAll ( gather Children By Class ( view Group , Ġclazz , ĠArrayList ())) ĊĠĠĠĠĠĠĠ Ġreturn Ġcollection ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< V Ġ: ĠView > Ġgather Children By Class ( view Group : ĠViewGroup , Ġclazz : ĠClass < V >, Ġchildren Found : ĠMutable Collection < V >): ĠCollection < V > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġview Group . child Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild Ġ= Ġview Group . getChild At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( clazz . isAssignableFrom ( child . java Class )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchildren Found . add ( child Ġas ĠV ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( child Ġis ĠViewGroup ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgather Children By Class ( child , Ġclazz , Ġchildren Found ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġchildren Found ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġimport Settings ( settings : ĠMap < String , ĠAny >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprefs Ġ= Ġget Settings ( this ). edit () ĊĠĠĠĠĠĠĠ Ġfor Ġ( key Ġin Ġsettings . keys ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġsettings [ key ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( obj ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFloat Ġ-> Ġprefs . put Float ( key , Ġobj ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Ġ-> Ġprefs . putString ( key , Ġobj Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBoolean Ġ-> Ġprefs . put Boolean ( key , Ġobj ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInt Ġ-> Ġprefs . put Int ( key , Ġobj ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLong Ġ-> Ġprefs . put Long ( key , Ġobj ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSet < *> Ġ-> Ġprefs . putString Set ( key , Ġobj Ġas ĠSet < String > ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprefs . apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġexport Settings (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= Ġget Settings ( this ). all ĊĠĠĠĠĠĠĠ Ġreturn ĠJSONObject ( settings ). toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġserver Online (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= ĠURL ( Config . API _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsockaddr Ġ= ĠInet SocketAddress ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInet Address . get ByName ( url . host ), Ġ 8 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsock Ġ= ĠSocket () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtimeout Ms Ġ= Ġ 2 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsock . connect ( sock addr , Ġtimeout Ms ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhave Connection (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= ĠURL (" http :// www . google . de ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsockaddr Ġ= ĠInet SocketAddress ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInet Address . get ByName ( url . host ), Ġ 8 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsock Ġ= ĠSocket () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtimeout Ms Ġ= Ġ 2 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsock . connect ( sock addr , Ġtimeout Ms ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcalculate Color ( color 1 : ĠInt , Ġcolor 2 : ĠInt , Ġmax : ĠInt , Ġcurrent : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstr C 1 Ġ= ĠInteger . to HexString ( color 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġstr C 2 Ġ= ĠInteger . to HexString ( color 2 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġret Color Ġ= ĠStringBuilder ("# ") ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġstr C 1 . length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp 1 Ġ= Ġstr C 1 [ i ] Ġ+ Ġ"" Ġ+ Ġstr C 1 [ i Ġ+ Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp 2 Ġ= Ġstr C 2 [ i ] Ġ+ Ġ"" Ġ+ Ġstr C 2 [ i Ġ+ Ġ 1 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp 1 Color Ġ= Ġjava . lang . Long . parse Long ( tmp 1 , Ġ 1 6 ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp 2 Color Ġ= Ġjava . lang . Long . parse Long ( tmp 2 , Ġ 1 6 ). toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdif Ġ= Ġtmp 1 Color Ġ- Ġtmp 2 Color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdif Calc Ġ= Ġdif . toDouble () Ġ/ Ġmax ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Merge Ġ= Ġ( dif Calc Ġ* Ġcurrent ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġadd Ġ= ĠInteger . to HexString ( tmp 2 Color Ġ+ Ġcolor Merge ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( add . length Ġ< Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Ġ= Ġ" 0 $ add " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġret Color . append ( add ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠColor . parse Color ( ret Color . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck App Dir (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapp Dir Ġ= ĠFile ( Environment . get External Storage Directory (), Ġ". app Store ") ĊĠĠĠĠĠĠĠ Ġdelete Directory ( app Dir ) ĊĠĠĠĠĠĠĠ Ġreturn Ġapp Dir . mkdir s () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdelete Directory ( path : ĠFile ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( path . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfiles Ġ= Ġpath . list Files () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( file Ġin Ġfiles ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file . isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Directory ( file ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile . delete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġpath . delete () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck For Old App Store () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! get Settings ( this ). getBoolean (" old _ app store ", Ġfalse )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( app Installed ( this , Ġold App PackageName )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠonClick Listener Ġ= Ġ{ Ġ_: ĠDialog Interface , Ġwhich : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( which ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDialog Interface . BUTTON _ POSITIVE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ DELETE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . data Ġ= ĠUri . parse (" package :$ old App PackageName ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDialog Interface . BUTTON _ NEGATIVE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . setMessage ( getString ( R . string . old App Store Found )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set Positive Button ( android . R . string . yes , ĠonClick Listener ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set Negative Button ( android . R . string . no , ĠonClick Listener ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrun Command ( command : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġlogs Ġ= ĠLogs ( this ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRuntime . get Runtime (). exec ( command ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogs . error (" ERROR ", Ġe . message !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck Permissions () Ġ{ ĊĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpermissions (). to Typed Array (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPER MISSION S ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset TimeOut ( duration : ĠInt , Ġcallback : ĠCallback ) Ġ{ ĊĠĠĠĠĠĠĠ ĠThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( duration . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ Ġcallback . run () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠInterruptedException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ Ġcallback . run () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpermissions (): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠArrayList ( Arrays . asList ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . WRITE _ EXTERNAL _ STORAGE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . READ _ EXTERNAL _ STORAGE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . GET _ ACCOUNT S ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < String >, Ġgrant Results : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠPER MISSION S ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( permission Ġin Ġpermissions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Context Compat . check Self Permission ( this , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpermission ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġsync Preferences () Ġ{ ĊĠĠĠĠĠĠĠ ĠThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpreferences Ġ= Ġget Settings ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġpreferences . edit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolors Ġ= Ġget SharedPreferences (" colors _" Ġ+ ĠUID ( this ), ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Color Ġ= Ġcolors . edit () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= ĠJSONObject ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Web Content ( API _ URL Ġ+ Ġ"/ apps / prefs . php ? user =" Ġ+ ĠUID ( this ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġit Ġ= ĠjsonObject . getJSONObject (" prefs "). keys () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( it . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġit . next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj Ġ= ĠjsonObject . getJSONObject (" prefs "). get ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( obj ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Ġ-> Ġeditor . putString ( key , Ġobj ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInt Ġ-> Ġeditor . put Int ( key , Ġobj ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLong Ġ-> Ġeditor . put Long ( key , Ġobj ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFloat Ġ-> Ġeditor . put Float ( key , Ġobj ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBoolean Ġ-> Ġeditor . put Boolean ( key , Ġobj ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSet < *> Ġ-> Ġeditor . putString Set ( key , Ġobj Ġas ĠSet < String >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġit Ġ= ĠjsonObject . getJSONObject (" colors "). keys () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( it . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġit . next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj Ġ= ĠjsonObject . getJSONObject (" colors "). get ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( obj ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Ġ-> Ġeditor Color . putString ( key , Ġobj ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInt Ġ-> Ġeditor Color . put Int ( key , Ġobj ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLong Ġ-> Ġeditor Color . put Long ( key , Ġobj ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFloat Ġ-> Ġeditor Color . put Float ( key , Ġobj ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBoolean Ġ-> Ġeditor Color . put Boolean ( key , Ġobj ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSet < *> Ġ-> Ġeditor Color . putString Set ( key , Ġobj Ġas ĠSet < String >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . apply () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor Color . apply () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" PRE FS ", Ġpreferences . all . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" COLORS ", Ġcolors . all . toString ()) ĊĠĠĠĠĠĠĠ Ġ}. start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( toolbar Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar !!. set Toolbar Icon Color ( Theme Store . getInstance ( this ) !!. primary Color ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate Options Menu ( menu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Support Navigate Up (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġon Back Pressed () ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠAsync Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġrun ( activity : ĠActivity , Ġa Class : ĠClass <* >, Ġoptions : ĠBundle ?) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠListener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġrun ( progress : ĠInt ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠCallback Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġrun () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠByteBuffer ( val Ġbytes : ĠByteArray , Ġval Ġbuffer : ĠInt ) ĊĊĠĠĠ Ġclass ĠstartActivity Async Ġ@ Jvm Over loads Ġconstructor ( private Ġval Ġactivity : ĠActivity , Ġprivate Ġval Ġa Class : ĠClass <* >, Ġprivate Ġval Ġoptions : ĠBundle ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġtime : ĠLong Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Time ( time : ĠLong ): ĠstartActivity Async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . time Ġ= Ġtime ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġstart ( async : ĠAsync ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsleep ( time ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġasync . run ( activity , Ġa Class , Ġoptions ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠCO LO RED _ NAV IG ATION BAR Ġ= Ġ" colored _ nav _ bar " ĊĠĠĠĠĠĠĠ Ġprotected Ġval ĠPACK AGE _ NAME Ġ= Ġ" com . der typ 7 2 1 4 . app store " ĊĠĠĠĠĠĠĠ Ġvar Ġuser Image HashMap Ġ= ĠHashMap < String , ĠDrawable >() ĊĠĠĠĠĠĠĠ Ġvar Ġapps List Ġ= ĠHashMap < String , ĠSearch Item >() ĊĠĠĠĠĠĠĠ Ġvar Ġcurrent App : ĠSearch Item ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġicons Ġ= ĠHashMap < String , ĠDrawable >() ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġrain bow : ĠThread ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun Ġcolor ToString (@ Color Int Ġint Color : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠString . format ("# % 0 6 X ", Ġ 0 x FFFFFF Ġand Ġint Color ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġadd Alpha ( original Color : ĠString , Ġalpha : ĠDouble ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġoriginal Color Ġ= Ġoriginal Color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalpha Fixed Ġ= ĠMath . round ( alpha Ġ* Ġ 2 5 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġalpha Hex Ġ= Ġjava . lang . Long . to HexString ( alpha Fixed ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( alpha Hex . length Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Hex Ġ= Ġ" 0 $ alpha Hex " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( original Color . replace ("# ", Ġ""). length Ġ> Ġ 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoriginal Color Ġ= Ġoriginal Color . replace First ("# .. ". to Regex (), Ġ"# ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoriginal Color Ġ= Ġoriginal Color . replace ("# ", Ġ"# $ alpha Hex ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġoriginal Color ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġt int Widget ( view : ĠView , Ġcolor : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwrapped Drawable Ġ= ĠDrawable Compat . wrap ( view . background ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDrawable Compat . set Tint ( wrapped Drawable . mutate (), Ġcolor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . background Ġ= Ġwrapped Drawable ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Cursor Color ( view : ĠEditText , Ġ@ Color Int Ġcolor : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfield Ġ= ĠTextView :: class . java . getDeclared Field (" m Cursor Drawable Res ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdrawable Res Id Ġ= Ġfield . getInt ( view ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= ĠTextView :: class . java . getDeclared Field (" m Editor ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġfield . get ( view ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdrawable Ġ= ĠContext Compat . get Drawable ( view . context , Ġdrawable Res Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable !!. setColor Filter ( color , ĠPort er D uff . Mode . SRC _ IN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdraw ables Ġ= ĠarrayOf ( drawable , Ġdrawable ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġeditor . java Class . getDeclared Field (" m Cursor Drawable ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield . set ( editor , Ġdraw ables ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġremove My App ( packageName : ĠString , Ġcontext : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Web Content ( Config . API _ URL Ġ+ Ġ"/ apps / my apps . php ? uid =" Ġ+ ĠConfig ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. UID ( context ) Ġ+ Ġ"& remove =" Ġ+ ĠpackageName ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Installed Apps ( context : ĠContext ): ĠList < Application Info > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpm Ġ= Ġcontext . package Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpm . get Installed Applications ( PackageManager . GET _ META _ DATA ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Application Info ( context : ĠContext , ĠpackageName : ĠString ): ĠApplication Info ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġinfo : ĠApplication Info ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo Ġ= Ġcontext . package Manager . getApplication Info ( packageName , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinfo ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġencode To Base 6 4 ( drawable : ĠDrawable ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Ġ= Ġdrawable To Bitmap ( drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠbyteArray OS Ġ= ĠByteArrayOutputStream () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage !!. compress ( Bitmap . Compress Format . PNG , Ġ 1 0 0 , ĠbyteArray OS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBase 6 4 . encode ToString ( byteArray OS . toByteArray (), ĠBase 6 4 . DEFAULT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġdecode Base 6 4 ( context : ĠContext , Ġinput : ĠString ): ĠDrawable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdecoded Bytes Ġ= ĠBase 6 4 . decode ( input , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBitmap Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . resources , ĠBitmap Factory ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. decode ByteArray ( decoded Bytes , Ġ 0 , Ġdecoded Bytes . size )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Settings ( context : ĠContext ): ĠSharedPreferences Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcontext . get SharedPreferences (" settings _" Ġ+ ĠConfig . UID ( context ), ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Settings ( context : ĠContext , Ġsettings : ĠSharedPreferences ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobject Map Ġ= Ġsettings . all ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprefs Ġ= Ġget Settings ( context ). edit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( key Ġin Ġobject Map . keys ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġobject Map [ key ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( obj ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFloat Ġ-> Ġprefs . put Float ( key , Ġobj ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Ġ-> Ġprefs . putString ( key , Ġobj Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBoolean Ġ-> Ġprefs . put Boolean ( key , Ġobj ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInt Ġ-> Ġprefs . put Int ( key , Ġobj ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLong Ġ-> Ġprefs . put Long ( key , Ġobj ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSet < *> Ġ-> Ġprefs . putString Set ( key , Ġobj Ġas ĠSet < String > ?) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprefs . apply () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset NavigationBar Color ( activity : ĠActivity , Ġview : ĠView ?, Ġ@ Color Int Ġcolor : ĠInt , Ġduration : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( get Settings ( activity ). getBoolean ( CO LO RED _ NAV IG ATION BAR , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ|| ĠBuild . VERSION . SDK _ INT Ġ< ĠBuild . VERSION _ CODES . P ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& ĠBuild . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M Ġ&& Ġview Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwindow Ġ= Ġactivity . window ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanim ator Ġ= ĠValue Animator ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. of Object ( Argb Evaluator (), Ġwindow . navigation Bar Color , Ġcolor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . duration Ġ= Ġduration . to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . add Update Listener Ġ{ Ġanimation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġanimation . animated Value Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Color B right ( c ) Ġ&& ĠBuild . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . system Ui Visibility Ġ= ĠView . SYSTEM _ UI _ FLAG _ LIGHT _ NAV IG ATION _ BAR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . system Ui Visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . navigation Bar Color Ġ= Ġc ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M Ġ&& Ġview Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwindow Ġ= Ġactivity . window ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanim ator Ġ= ĠValue Animator ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. of Object ( Argb Evaluator (), Ġwindow . navigation Bar Color , ĠColor . BLACK ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . duration Ġ= Ġduration . to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . add Update Listener Ġ{ Ġanimation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġanimation . animated Value Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Color B right ( c ) Ġ&& ĠBuild . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . system Ui Visibility Ġ= ĠView . SYSTEM _ UI _ FLAG _ LIGHT _ NAV IG ATION _ BAR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . system Ui Visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . navigation Bar Color Ġ= Ġc ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset StatusBar Color ( activity : ĠActivity , Ġview : ĠView , Ġ@ Color Int Ġcolor : ĠInt , Ġduration : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwindow Ġ= Ġactivity . window ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanim ator Ġ= ĠValue Animator ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. of Object ( Argb Evaluator (), Ġwindow . status Bar Color , Ġcolor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . duration Ġ= Ġduration . to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . add Update Listener Ġ{ Ġanimation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġanimation . animated Value Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Color B right ( c )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . system Ui Visibility Ġ= ĠView . SYSTEM _ UI _ FLAG _ LIGHT _ STATUS _ BAR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . system Ui Visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . status Bar Color Ġ= Ġc ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġis Color B right ( color : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdark ness Ġ= Ġ 1 Ġ- Ġ( 0 . 2 9 9 Ġ* ĠColor . red ( color ) Ġ+ Ġ 0 . 5 8 7 Ġ* ĠColor . green ( color ) Ġ+ Ġ 0 . 1 1 4 Ġ* ĠColor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. blue ( color )) Ġ/ Ġ 2 5 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdark ness Ġ< Ġ 0 . 5 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Dominant Color ( drawable : ĠDrawable ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Bitmap Ġ= ĠBitmap . create Scaled Bitmap ( drawable To Bitmap ( drawable ) !! , Ġ 1 , Ġ 1 , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġnew Bitmap . get Pixel ( 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Bitmap . recycle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcolor ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġmanipulate Color ( color : ĠInt , Ġfactor : ĠFloat ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa Ġ= ĠColor . alpha ( color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Ġ= ĠMath . round ( Color . red ( color ) Ġ* Ġfactor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġg Ġ= ĠMath . round ( Color . green ( color ) Ġ* Ġfactor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= ĠMath . round ( Color . blue ( color ) Ġ* Ġfactor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠColor . arg b ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMath . min ( r , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMath . min ( g , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMath . min ( b , Ġ 2 5 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġdrawable To Bitmap ( drawable : ĠDrawable ?): ĠBitmap ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= Ġif Ġ( drawable !!. intrinsic Width Ġ<= Ġ 0 Ġ|| Ġdrawable . intrinsic Height Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap . create Bitmap ( 1 , Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap . Config . ARGB _ 8 8 8 8 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create Bitmap ( drawable . intrinsic Width , Ġdrawable . intrinsic Height , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap . Config . ARGB _ 8 8 8 8 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( drawable Ġis ĠBitmap Drawable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Drawable Ġ= Ġdrawable Ġas ĠBitmap Drawable ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bitmap Drawable !!. bitmap Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbitmap Drawable . bitmap ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcanvas Ġ= ĠCanvas ( bitmap !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable . setBounds ( 0 , Ġ 0 , Ġcanvas . width , Ġcanvas . height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable . draw ( canvas ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbitmap ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Web Content ( url : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġweb Ġ= ĠURL ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreader Ġ= ĠBufferedReader ( InputStream Reader ( web . open Stream ())) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġret Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġline : ĠString ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ({ line Ġ= Ġreader . readLine (); Ġline }() Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġret . append ( line !! ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreader . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġret . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Web Content ( url : ĠString , Ġpath : ĠFile , Ġid : ĠInt , Ġlistener : ĠListener ): ĠFile ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile url Ġ= ĠURL ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Connection Ġ= Ġfile url . open Connection () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Connection . connect () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠinputStream Ġ= ĠBuffered InputStream ( url Connection . getInputStream (), Ġ 8 1 9 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! path . exists ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath . mkdir s () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdownloaded File Ġ= ĠFile ( path , Ġ" download _ app _$ id . apk ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠoutputStream Ġ= ĠFileOutputStream ( downloaded File ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠByteArray ( 8 1 9 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlast Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfileSize Ġ= Ġurl Connection . content Length . to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġread : ĠLong ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtotal : ĠLong Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . run ( 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ({ Ġread Ġ= ĠinputStream . read ( buffer ). to Long (); Ġread Ġ} () !! Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp Ġ= Ġ( total Ġ* Ġ 1 0 0 Ġ/ ĠfileSize ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Ġ+= Ġread !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file Size Ġ> Ġ 0 Ġ&& Ġtmp Ġ> Ġlast Ġ+ Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Ġ= Ġtmp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . run ( tmp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠoutputStream . write ( buffer , Ġ 0 , Ġread !!. toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . run ( 1 0 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠoutputStream . flush () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠoutputStream . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠinputStream . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdownloaded File ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġhuman Readable Byte Count ( bytes : Long , Ġsi : Boolean ): String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġunit Ġ= Ġif Ġ( si ) Ġ 1 0 0 0 Ġelse Ġ 1 0 2 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bytes Ġ< Ġunit ) Ġreturn Ġ"$ bytes ĠB " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexp Ġ= Ġ( Math . log ( bytes . toDouble ()) Ġ/ ĠMath . log ( unit . toDouble ())). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpre Ġ= Ġ( if Ġ( si ) Ġ" k M GT PE " Ġelse Ġ" KM GT PE ")[ exp Ġ- Ġ 1 ] Ġ+ Ġ( if Ġ( si ) Ġ"" Ġelse Ġ" i ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠString . format ("% . 1 f Ġ% s B ", Ġbytes Ġ/ ĠMath . pow ( unit . toDouble (), Ġexp . toDouble ()), Ġpre ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġexecute Command ( activity : ĠActivity , Ġcmds : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlogs Ġ= ĠLogs ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogs . info (" COMMAND ", Ġcmds ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprocess Ġ= ĠRuntime . get Runtime (). exec (" su ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġos Ġ= ĠData OutputStream ( process . output Stream ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġos . write Bytes ( cmds Ġ+ Ġ"\ n ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġos . write Bytes (" exit \ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġos . flush () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġos . close () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocess . waitFor () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġapp Installed ( context : ĠActivity , Ġuri : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġapplication Installed ( context , Ġuri ) Ġ&& Ġ! verify Installer Id ( context , Ġuri ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġverify Installer Id ( context : ĠActivity , ĠpackageName : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalid Install ers Ġ= ĠArrayList ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArrays . asList (" com . android . v ending ", Ġ" com . google . android . feedback ")) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinstaller Ġ= Ġcontext . package Manager . get Installer PackageName ( packageName ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstaller Ġ!= Ġnull Ġ&& Ġvalid Install ers . contains ( installer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogs . getInstance ( context ). error (" verify Installer Id ", Ġe . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġapplication Installed ( context : ĠContext , Ġuri : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpm Ġ= Ġcontext . package Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpm . get Package Info ( uri , ĠPackage Manager . GET _ ACTIV ITIES ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠPackage Manager . Name NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠĠĠĠĠ Ġfun Ġdrawable From Url ( context : ĠContext , Ġurl : ĠString , Ġ@ Drawable Res Ġdef : ĠInt Ġ= ĠR . drawable . ic _ person ): ĠDrawable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( icons . containsKey ( url )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġicons [ url ] Ġ?: Ġcontext . resources . get Drawable ( R . drawable . ic _ launcher ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbmp : ĠBitmap ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconnection Ġ= ĠURL ( url ). open Connection () Ġas ĠHttp URLConnection ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection . connect () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġconnection . inputStream ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbmp Ġ= ĠBitmap Factory . decode Stream ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdrawable Ġ= ĠBitmap Drawable ( context . resources , Ġbmp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicons [ url ] Ġ= Ġdrawable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= Ġdrawable To Bitmap ( context . get Drawable ( def )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= ĠTheme Store . getInstance ( context ) !!. accent Color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . resources , Ġoverlay ( create Bitmap ( bitmap !! , Ġcolor ), Ġbitmap )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcreate Bitmap ( copy : ĠBitmap , Ġ@ Color Int Ġcolor : ĠInt ): ĠBitmap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbmp Ġ= ĠBitmap ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create Bitmap ( copy . width , Ġcopy . height , ĠBitmap . Config . ARGB _ 8 8 8 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcanvas Ġ= ĠCanvas ( bmp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Color ( color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbmp ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġoverlay ( bmp 1 : ĠBitmap , Ġbmp 2 : ĠBitmap ): ĠBitmap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbm Overlay Ġ= ĠBitmap . create Bitmap ( bmp 1 . width , Ġbmp 1 . height , Ġbmp 1 . config ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcanvas Ġ= ĠCanvas ( bm Overlay ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Bitmap ( bmp 1 , ĠMatrix (), Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Bitmap ( bmp 2 , ĠMatrix (), Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbm Overlay ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġinstall A pk ( context : ĠContext , Ġfile : ĠFile ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file !!. exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfileName Array Ġ= Ġfile . name . split ( Pattern . quote (". "). to Regex ()). drop Last While Ġ{ Ġit . isEmpty () Ġ}. to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fileName Array [ fileName Array . size Ġ- Ġ 1 ] Ġ== Ġ" apk ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . N ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdownloaded A pk Ġ= ĠgetFile Uri ( context , Ġfile ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ VIEW ). setData And Type ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdownloaded A pk , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" application / vnd . android . package - archive " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . add Flags ( Intent . FLAG _ GRANT _ READ _ URI _ PERMISSION ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ VIEW ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . setData And Type ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUri . from File ( file ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" application / vnd . android . package - archive " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . flags Ġ= ĠIntent . FLAG _ ACTIVITY _ NEW _ TASK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠgetFile Uri ( context : ĠContext , Ġfile : ĠFile ): ĠUri Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFile Provider . get Uri For File ( context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . application Context ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. packageName Ġ+ Ġ". Generic File Provider ", Ġfile ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġsleep ( duration : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( duration ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠInterruptedException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġrain bow ( context : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrain bow Ġ= Ġget Rain bow ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( get Settings ( context ). getBoolean (" rain bow _ mode ", Ġfalse )) Ġrain bow !!. start () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Rain bow ( context : ĠActivity ): ĠThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL ooper . prepare () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( rain bow Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( component Ġin ĠTheme Manager . getInstance ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. components ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsleep ( 5 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . run On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanim ator Ġ= ĠValue Animator . of Int ( 0 , Ġ 3 6 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . duration Ġ= Ġ 3 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . add Update Listener Ġ{ Ġanimation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġanimation . animated Value Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomponent . change Color ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange Hue ( Theme Store . getInstance ( context ) !!. accent Color , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsleep ( 3 0 0 0 Ġ+ Ġ 5 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Color Int ĊĠĠĠĠĠĠĠ Ġfun Ġchange Hue (@ Color Int Ġcolor : ĠInt , Ġdegree : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġh sv Ġ= ĠFloat Array ( 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor . color To H SV ( color , Ġh sv ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġh sv [ 0 ] Ġ+= Ġdegree . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( h sv [ 0 ] Ġ> Ġ 3 6 0 ) Ġh sv [ 0 ] Ġ-= Ġ 3 6 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠColor . H SV To Color ( h sv ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġtoggle Rain B ow ( enabled : ĠBoolean , Ġcontext : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( enabled Ġ&& Ġrain bow Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrain bow Ġ= Ġget Rain bow ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrain bow !!. start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrain bow Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Res Id ( res Name : ĠString , Ġc : ĠClass < *> ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Field Ġ= Ġc . getDeclared Field ( res Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Field . getInt ( id Field ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget StatusBar Color ( activity : ĠActivity ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġactivity . window . status Bar Color ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset StatusBar Color ( activity : ĠActivity , Ġ@ Color Int Ġcolor : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . window . status Bar Color Ġ= Ġcolor ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Change Logs ( context : ĠContext ): ĠChange Log Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠChange Log . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Version ( Version . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Name (" 5 . 4 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Code (" 5 4 0 0 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Change ( Version . Change ( Version . Change . Change Type . IMP RO VE MENT , Ġcontext . getString ( R . string . version 5 4 Impro vement 1 ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Change ( Version . Change ( Version . Change . Change Type . IMP RO VE MENT , Ġcontext . getString ( R . string . version 5 4 Impro vement 2 ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Version ( Version . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Name (" 5 . 3 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Code (" 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Change ( Version . Change ( Version . Change . Change Type . IMP RO VE MENT , Ġcontext . getString ( R . string . version 5 3 Impro vement ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Version ( Version . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Name (" 5 . 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Code (" 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Change ( Version . Change ( Version . Change . Change Type . IMP RO VE MENT , Ġcontext . getString ( R . string . version 5 2 Impro vement ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Version ( Version . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Name (" 5 . 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Code (" 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Change ( Version . Change ( Version . Change . Change Type . FIX , Ġcontext . getString ( R . string . version 5 1 Fix ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Version ( Version . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Name (" 5 . 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Code (" 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Change ( Version . Change ( Version . Change . Change Type . IMP RO VE MENT , Ġcontext . getString ( R . string . version 5 0 Impro vement ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Version ( Version . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Name (" 4 . 9 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Code (" 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Change ( Version . Change ( Version . Change . Change Type . IMP RO VE MENT , Ġcontext . getString ( R . string . version 4 9 Impro vement ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Version ( Version . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Name (" 4 . 8 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Code (" 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Change ( Version . Change ( Version . Change . Change Type . ADD , Ġcontext . getString ( R . string . version 4 8 Add ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Version ( Version . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Name (" 4 . 7 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Code (" 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Change ( Version . Change ( Version . Change . Change Type . FIX , Ġcontext . getString ( R . string . ver ison 4 7 Fix ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Version ( Version . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Name (" 4 . 6 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Code (" 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Change ( Version . Change ( Version . Change . Change Type . FIX , Ġcontext . getString ( R . string . version 4 6 Fix ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Version ( Version . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Name (" 4 . 5 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Code (" 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Change ( Version . Change ( Version . Change . Change Type . ADD , Ġcontext . getString ( R . string . version 4 5 Add ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Version ( Version . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Name (" 4 . 4 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Code (" 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Change ( Version . Change ( Version . Change . Change Type . FIX , Ġcontext . getString ( R . string . version 4 4 Fix ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Version ( Version . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Name (" 4 . 3 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Code (" 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Change ( Version . Change ( Version . Change . Change Type . FIX , Ġcontext . getString ( R . string . version 4 3 Fix ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Version ( Version . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Name (" 4 . 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Code (" 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Change ( Version . Change ( Version . Change . Change Type . ADD , Ġcontext . getString ( R . string . version 4 2 Add ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Change ( Version . Change ( Version . Change . Change Type . FIX , Ġcontext . getString ( R . string . version 4 2 Fix ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Version ( Version . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Name (" 4 . 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Code (" 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Change ( Version . Change ( Version . Change . Change Type . ADD , Ġcontext . getString ( R . string . version 4 1 Add 1 ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Change ( Version . Change ( Version . Change . Change Type . ADD , Ġcontext . getString ( R . string . version 4 1 Add 2 ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Version ( Version . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Name (" 4 . 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Code (" 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Change ( Version . Change ( Version . Change . Change Type . FIX , Ġcontext . getString ( R . string . version 4 0 Fix ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Version ( Version . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Name (" 3 . 8 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Code (" 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Change ( Version . Change ( Version . Change . Change Type . ADD , Ġcontext . getString ( R . string . version 3 8 Add ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Version ( Version . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Name (" 3 . 6 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Code (" 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Change ( Version . Change ( Version . Change . Change Type . ADD , Ġcontext . getString ( R . string . version 3 6 Add ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Version ( Version . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Name (" 3 . 5 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Code (" 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Change ( Version . Change ( Version . Change . Change Type . ADD , Ġcontext . getString ( R . string . version 3 5 Add 1 ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Change ( Version . Change ( Version . Change . Change Type . ADD , Ġcontext . getString ( R . string . version 3 5 Add 2 ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Change ( Version . Change ( Version . Change . Change Type . FIX , Ġcontext . getString ( R . string . version 3 5 Fix 1 ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Version ( Version . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Name (" 3 . 4 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Version Code (" 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Change ( Version . Change ( Version . Change . Change Type . ADD , Ġcontext . getString ( R . string . version 3 4 Add 1 ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Change ( Version . Change ( Version . Change . Change Type . ADD , Ġcontext . getString ( R . string . version 3 4 Add 2 ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Link Color ( Color . GREEN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build (). build Dialog ( context . getString ( R . string . text _ changes )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ