package Ġcom . k iven . sample . dock Ċ Ċ import Ġandroid . content . Component Name Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . content . pm . Resolve Info Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . os . AsyncTask Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Settings Ċ import Ġandroid . view .* Ċ import Ġandroid . widget . ImageView Ċ import Ġandroidx . palette . graphics . Palette Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . alibaba . android . ar outer . facade . annotation . Route Ċ import Ġcom . k iven . k utils . activity Helper . activity . K Activity Ċ import Ġcom . k iven . k utils . log Helper . K Log Ċ import Ġcom . k iven . k utils . tools . K App Tool Ċ import Ġcom . k iven . k utils . tools . K Util Ċ import Ġcom . k iven . sample . R Ċ import Ġcom . k iven . sample . util . show Dialog Ċ import Ġkotlinx . android . synt hetic . main . activity _ dock .* Ċ import Ġkotlinx . android . synt hetic . main . item _ app . view .* Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . launch Ċ import Ġorg . x utils . x Ċ import Ġjava . io . IOException Ċ import Ġjava . lang . ref . Soft Reference Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . ArrayList ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby Ġo uk ob ay ashi Ġon Ġ 2 0 1 9 - 0 8 - 0 9 . Ċ Ġ* Ċ Ġ* Ġæ ¡ Į éĿ¢ æ£Ģæµĭ ä¸İ è®¾ç½® ï¼ļ https :// blog . cs dn . net / weixin _ 4 1 5 4 9 9 1 5 / article / details / 8 1 6 3 3 3 5 4 Ċ Ġ* ĠAndroid èİ·åıĸ åºĶçĶ¨ ä¿¡æģ¯ ( Android Manifest ): Ġhttps :// www . jian shu . com / p / 9 4 df cb 8 6 9 9 9 5 Ċ Ġ*/ Ċ @ Route ( path Ġ= Ġ"/ dock / home ") Ċ class ĠActivity Dock Ġ: ĠK Activity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġapps : ĠMutable List < Entity App Info > Ġ= ĠArrayList () ĊĠĠĠ Ġprivate Ġval Ġapp Adapter Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠApp Adapter () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar ĠtextColor Ġ= ĠColor . WHITE ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ dock ) ĊĠĠĠĠĠĠĠ Ġload Bg () ĊĊĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= ĠGrid LayoutManager ( this , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġapp Adapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġload Apps () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . apps , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġmenu . add ( 0 , ĠMenu . FIRST Ġ+ Ġ 1 , Ġ 0 , Ġ" æīĵå¼Ģ è®¾ç½® ") ĊĠĠĠĠĠĠĠ Ġmenu . add ( 0 , ĠMenu . FIRST Ġ+ Ġ 2 , Ġ 0 , Ġ" è®¾ç½® æ¡ Į éĿ¢ ") ĊĠĠĠĠĠĠĠ Ġmenu . add ( 0 , ĠMenu . FIRST Ġ+ Ġ 3 , Ġ 0 , Ġ" å½ĵåīį æ¡ Į éĿ¢ ä¿¡æģ¯ ") ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMenu . FIRST Ġ+ Ġ 1 Ġ-> ĠstartActivity ( Intent ( Settings . ACTION _ SETTINGS )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMenu . FIRST Ġ+ Ġ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparam Intent Ġ= ĠIntent (" android . intent . action . MAIN ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparam Intent . component Ġ= ĠComponent Name (" android ", Ġ" com . android . internal . app . Resolver Activity ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparam Intent . add Category (" android . intent . category . DEFAULT ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparam Intent . add Category (" android . intent . category . HOME ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( param Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMenu . FIRST Ġ+ Ġ 3 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠåĪ¤æĸŃ æ¡ Į éĿ¢ æĺ¯åĲ¦ æĺ¯ å½ĵåīį app çļĦ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdock Intent Ġ= ĠIntent ( Intent . ACTION _ MAIN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdock Intent . add Category ( Intent . CATEGORY _ HOME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġpackage Manager . resolve Activity ( dock Intent , Ġ 0 ) Ġ?: Ġreturn Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append Line (" æ¡ Į éĿ¢ Activity ç±» åĲį ï¼ļ ${ res . activity Info . name }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append Line (" æ¡ Į éĿ¢ åºĶçĶ¨ åĮħ åĲį ï¼ļ ${ res . activity Info . packageName }") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Dialog ( sb . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġwp Tag Ġ= Ġ" wall paper " ĊĊĠĠĠ Ġprivate Ġfun Ġload Bg () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnum Ġ= ĠK Util . get SharedPreferences Int Value ( wp Tag , Ġ 0 ) ĊĠĠĠĠĠĠĠ ĠK Util . put SharedPreferences Int Value ( wp Tag , Ġnum Ġ+ Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocales Ġ= Ġassets . list ( wp Tag ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( locales Ġ== Ġnull Ġ|| Ġlocales . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġwp Tag Ġ+ Ġ"/" Ġ+ Ġlocales [ num Ġ% Ġlocales . size ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠinputStream Ġ= Ġassets . open ( path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbg Bitmap Ġ= ĠBitmap Factory . decode Stream ( inputStream ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠimageView Ġ= ĠfindViewById < View >( R . id . iv _ bg ) Ġas ĠImageView ĊĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . setImage Bitmap ( bg Bitmap ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠPalette . from ( bg Bitmap ). resize Bitmap Area ( 8 ). generate Ġ{ Ġpalette Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsw atch : ĠPalette . Sw atch ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sw atch Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsw atch Ġ= Ġpalette ?. dark V ibr ant Sw atch ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sw atch Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsw atch Ġ= Ġpalette ?. dark Mut ed Sw atch ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sw atch Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsw atch Ġ= Ġpalette ?. light V ibr ant Sw atch ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sw atch Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsw atch Ġ= Ġpalette ?. light Mut ed Sw atch ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sw atch Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsw atch Ġ= Ġpalette ?. vi br ant Sw atch ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sw atch Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsw atch Ġ= Ġpalette ?. muted Sw atch ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextColor Ġ= Ġsw atch ?. title TextColor Ġ?: ĠColor . WHITE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK Log . e ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġload Apps () Ġ{ ĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch Ġ{ Ġ} ĊĊĠĠĠĠĠĠĠ Ġx . task (). run ( Runnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapps . clear () ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Intent Ġmain Intent Ġ= Ġnew ĠIntent ( Intent . ACTION _ MAIN , Ġnull ); ĊĠĠĠĠĠĠĠ Ġmain Intent . add Category ( Intent . CATEGORY _ LA UNCH ER ); ĊĊĠĠĠĠĠĠĠ ĠPackage Manager Ġpackage Manager Ġ= Ġget PackageManager (); ĊĊĠĠĠĠĠĠĠ ĠList < Resolve Info > Ġresolve Infos Ġ= Ġpackage Manager . query Intent Activities ( main Intent , ĠPackage Manager . MATCH _ ALL ); ĊĠĠĠĠĠĠĠ Ġif Ġ( resolve Infos Ġ!= Ġnull Ġ&& Ġresolve Infos . size () Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠList < Entity App Info > Ġapp Infos Ġ= Ġnew ĠArrayList <>( resolve Infos . size ()); ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( Resolve Info Ġresolve Info Ġ: Ġresolve Infos ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Infos . add ( new ĠEntity App Info ( package Manager , Ġresolve Info . activity Info . application Info )); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġapps . addAll ( app Infos ); ĊĠĠĠĠĠĠĠ Ġ}*/ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* val Ġresolve Infos Ġ= Ġpackage Manager . query Intent Activities ( Intent ( Intent . ACTION _ MAIN , Ġnull ), ĠPackage Manager . MATCH _ ALL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresolve Infos . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . filter . categories Iterator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}*/ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġèİ·åıĸ æīĢæľī åºĶçĶ¨ ï¼Į åĮħæĭ¬ ç³»ç»Ł æľįåĬ¡ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpackage Manager Ġ= Ġpackage Manager ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapplication Infos Ġ= Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . N ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Manager . get Installed Applications ( PackageManager . MATCH _ UN INST ALLED _ PACK AGES ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Manager . get Installed Applications ( PackageManager . GET _ UN INST ALLED _ PACK AGES ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( application Infos . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( application Info Ġin Ġapplication Infos ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapps . add ( Entity App Info ( package Manager , Ġapplication Info )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapps . sort With ( Comparator Ġ{ Ġo 1 , Ġo 2 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( o 1 . can Start ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( o 2 . can Start ) Ġ 0 Ġelse Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( o 2 . can Start ) Ġ 1 Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO Ġ è°ĥçĶ¨ ä¸» çº¿ç¨ĭ åĪ·æĸ° åĪĹè¡¨ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx . task (). post ( Runnable Ġ{ Ġapp Adapter . notify DataSet Changed () Ġ}) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĲ¯åĬ¨ APP ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġpkg Ġ åĮħ åĲį ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġstart App ( pkg : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠK App Tool . start App ( this , Ġpkg ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠApp Adapter Ġ: ĠRecyclerView . Adapter < RecyclerView . ViewHolder >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapp Info Ġ= Ġapps [ position ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item View . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtask Ġ= ĠMy Task () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . imageView Ġ= ĠSoft Reference ( iv _ app _ icon ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . app Info Ġ= Ġapp Info ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . execute () ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ app _ tit ile . text Ġ= Ġapp Info . app Title ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( app Info . can Start ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ app _ tit ile . setTextColor ( if Ġ( app Info . is System ) ĠColor . RED Ġelse ĠColor . BLUE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ app _ tit ile . setTextColor ( Color . GRAY ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Info . print () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart App ( app Info . packageName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġapps . size ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠRecyclerView . ViewHolder ( LayoutInflater . from ( this @ Activity Dock ). inflate ( R . layout . item _ app , Ġparent , Ġfalse )) Ġ{} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠMy Task Ġ: ĠAsync Task < Any , ĠDrawable , ĠDrawable >() Ġ{ ĊĠĠĠĠĠĠĠ Ġvar ĠimageView : ĠSoft Reference < ImageView >? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġapp Info : ĠEntity App Info ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdo In Background ( params : ĠArray < Any >): ĠDrawable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġapp Info !!. app Icon ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Post Execute ( drawable : ĠDrawable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Post Execute ( drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠimageView ?. get ()?. setImage Drawable ( drawable ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }