package Ġcom . in z . z . z launcher . view . activity Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Application Ċ import Ġandroid . app widget . App Widget Host Ċ import Ġandroid . app widget . App Widget Manager Ċ import Ġandroid . content . Component Name Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . Launcher Activity Info Ċ import Ġandroid . content . pm . Launcher Apps Ċ import Ġandroid . util . Layout Direction Ċ import Ġandroid . view . View Ċ import Ġandroidx . constraint layout . solver . widgets . Constraint Horizontal Layout Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . in z . z . base . util . L Ċ import Ġcom . in z . z . base . util . Launcher Helper Ċ import Ġcom . in z . z . base . view . Abs Base Activity Ċ import Ġcom . in z . z . z launcher . R Ċ import Ġcom . in z . z . z launcher . view . activity . adapter . Launcher Icon Adapter Ċ import Ġkotlinx . android . synt hetic . main . launcher _ layout .* Ċ import Ġjava . nio . file . Directory Iterator Exception Ċ Ċ /** Ċ Ġ* Ġæ ¡ Į éĿ¢ Ċ Ġ* Ġ@ author ĠZ h eng lj Ċ Ġ* Ġ@ version Ġ 1 . 0 . 0 Ċ Ġ* ĠCreate Ġby Ġin z Ġin Ġ 2 0 1 9 / 1 2 / 3 1 Ġ 1 0 : 2 7 . Ċ Ġ*/ Ċ class ĠZ Launcher Activity Ġ: ĠAbs Base Activity () Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" Z Launcher Activity " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠAPP _ WIDGET _ HOST _ ID Ġ= Ġ 0 x 0 0 0 1 0 A ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠREQUEST _ APP _ WIDGET _ P ICK Ġ= Ġ 0 x 0 0 1 2 ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġlauncher Icon Adapter : ĠLaunch er Icon Adapter ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġinit Window () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Layout Id (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR . layout . launcher _ layout ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlayout Manager Ġ= ĠGrid LayoutManager ( mContext , ĠGrid LayoutManager . VERTICAL ) ĊĠĠĠĠĠĠĠ Ġlayout Manager . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspan Count Ġ= Ġ 4 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlauncher Icon Adapter Ġ= ĠLaunch er Icon Adapter ( mContext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Launcher Icon Adapter Listener ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠLaunch er Icon Adapter . Launcher Icon Adapter Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Click ( v : ĠView ?, Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresolve Info Ġ= Ġlauncher Icon Adapter ?. list ?. get ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( resolve Info Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomponent Name Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠComponent Name ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolve Info . activity Info . packageName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolve Info . activity Info . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomponent Ġ= Ġcomponent Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Flags ( Intent . FLAG _ ACTIVITY _ LA UNCH ED _ FROM _ HISTORY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġlauncher _ rv . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset LayoutManager ( layout Manager ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġlauncher Icon Adapter ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġload System All Application () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠREQUEST _ APP _ WIDGET _ P ICK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd App Widget ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĬłè½½ ç³»ç»Ł åħ¨éĥ¨ åºĶçĶ¨ç¨ĭåºı ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġload System All Application () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmain Intent Ġ= ĠIntent ( Intent . ACTION _ MAIN , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Category ( Intent . CATEGORY _ LA UNCH ER ) ĊĠĠĠĠĠĠĠ Ġvar Ġall Applications Ġ= Ġpackage Manager . query Intent Activities ( main Intent , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġall Applications Ġ= Ġall Applications . filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠpackageName Ġ= Ġit . activity Info . packageName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ! get PackageName (). equals ( packageName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ! packageName . contains (" com . pz df ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ! packageName . contains (" com . android . pz Phone ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ! packageName . contains (" com . android . pz MediaPlayer ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ! packageName . contains (" com . android . desk clock ") ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠL . i ( TAG , Ġ" Ġall ĠApplications Ġ[ Ġ$ all Applications Ġ] ") ĊĠĠĠĠĠĠĠ Ġlauncher Icon Adapter ?. refresh Data ( all Applications ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ éĢīæĭ© æ¡ Į éĿ¢ æİ§ä»¶ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġpick System All Widget () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwidget Id Ġ= ĠApp Widget Host ( mContext , ĠAPP _ WIDGET _ HOST _ ID ). allocate App Widget Id () ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( App Widget Manager . ACTION _ APP WIDGET _ P ICK ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( App Widget Manager . EXTRA _ APP WIDGET _ ID , Ġwidget Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , ĠREQUEST _ APP _ WIDGET _ P ICK ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd App Widget ( data : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwidget Id Ġ= Ġdata ?. getInt Extra ( App Widget Manager . EXTRA _ APP WIDGET _ ID , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġapp Widget Ġ= ĠApp Widget Manager . getInstance ( mContext ). getApp Widget Info ( widget Id Ġ?: Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( app Widget ?. configure Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( App Widget Manager . ACTION _ APP WIDGET _ CONFIGURE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Component ( app Widget . configure ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( App Widget Manager . EXTRA _ APP WIDGET _ ID , Ġwidget Id ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Act i ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ Ċ }