package Ġaf kt . app . ui . activity Ċ Ċ import Ġaf kt . app . R Ċ import Ġaf kt . app . base . Constants Ċ import Ġaf kt . app . base . config . Path Config Ċ import Ġaf kt . app . module . event . File Delete Event Ċ import Ġaf kt . app . ui . adapter . KeyValue Adapter Ċ import Ġaf kt . app . utils . EventBus Utils Ċ import Ġaf kt . app . utils . Project Utils Ċ import Ġandroid . Manifest Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . ActionBar Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġbutter knife . BindView Ċ import Ġbutter knife . B utter Kn ife Ċ import Ġbutter knife . OnClick Ċ import Ġdev . utils . app . App Utils Ċ import Ġdev . utils . app . Handler Utils Ċ import Ġdev . utils . app . Intent Utils Ċ import Ġdev . utils . app . Resource Utils Ċ import Ġdev . utils . app . helper . View Helper Ċ import Ġdev . utils . app . info . A pk Info Item Ċ import Ġdev . utils . app . info . App Info Utils Ċ import Ġdev . utils . app . logger . Dev Logger Ċ import Ġdev . utils . app . permission . Permission Utils Ċ import Ġdev . utils . app . toast . Toast Tint Utils Ċ import Ġdev . utils . common . FileUtils Ċ import Ġdev . utils . common . StringUtils Ċ import Ġjava . util .* Ċ Ċ class ĠA pk Details Activity Ġ: ĠAppCompatActivity (), ĠView . OnClickListener Ġ{ ĊĊĠĠĠ Ġ// Ġ= ĠView Ġ= ĊĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġ@ BindView ( R . id . vid _ aad _ toolbar ) ĊĠĠĠ Ġvar Ġvid _ aad _ toolbar : ĠToolbar ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġ@ BindView ( R . id . vid _ aad _ app _ ig view ) ĊĠĠĠ Ġvar Ġvid _ aad _ app _ ig view : ĠImageView ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġ@ BindView ( R . id . vid _ aad _ name _ tv ) ĊĠĠĠ Ġvar Ġvid _ aad _ name _ tv : ĠTextView ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġ@ BindView ( R . id . vid _ aad _ v name _ tv ) ĊĠĠĠ Ġvar Ġvid _ aad _ v name _ tv : ĠTextView ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġ@ BindView ( R . id . vid _ aad _ re cy ) ĊĠĠĠ Ġvar Ġvid _ aad _ re cy : ĠRecyclerView ? Ġ= Ġnull ĊĊĠĠĠ Ġ// Ġ= ĠObject Ġ= ĊĊĠĠĠ Ġvar Ġapk Info Item : ĠA pk Info Item ? Ġ= Ġnull Ġ// ĠA PK Ġ ä¿¡æģ¯ ĠItem ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ apk _ details ) ĊĠĠĠĠĠĠĠ ĠB utter Kn ife . bind ( this ) ĊĊĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapk Info Item Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Info Utils . get A pk Info Item ( intent . getString Extra ( Constants . Key . KEY _ AP K _ URI )) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDev Logger . e ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( apk Info Item Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast Tint Utils . warning ( Resource Utils . getString ( R . string . str _ get _ apk info _ fail )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( vid _ aad _ toolbar ) ĊĠĠĠĠĠĠĠ Ġval Ġaction Bar : ĠAction Bar ? Ġ= Ġsupport ActionBar ĊĠĠĠĠĠĠĠ Ġif Ġ( action Bar Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ç»Ļ å·¦ ä¸Ĭ è§Ĵ åĽ¾ æłĩ çļĦ å·¦ è¾¹ åĬł ä¸Ĭ ä¸Ģä¸ª è¿ĶåĽŀ çļĦ åĽ¾ æłĩ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Bar . set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ å¯¹åºĶ ĠAction Bar . DISPLAY _ SHOW _ TITLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Bar . set Display Show Title Enabled ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġè®¾ç½® çĤ¹åĩ» äºĭä»¶ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvid _ aad _ toolbar ?. set Navigation OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġèİ·åıĸ ĠAPP Ġ ä¿¡æģ¯ ĊĠĠĠĠĠĠĠ Ġval Ġapp Info Bean Ġ= Ġapk Info Item !!. app Info Bean ĊĠĠĠĠĠĠĠ ĠView Helper . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setImage Drawable ( vid _ aad _ app _ ig view , Ġapp Info Bean . app Icon ) Ġ// Ġè®¾ç½® Ġapp Ġ åĽ¾ æłĩ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setText ( vid _ aad _ name _ tv , Ġapp Info Bean . appName ) Ġ// Ġè®¾ç½® Ġapp Ġ åĲį ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setText ( vid _ aad _ v name _ tv , Ġapp Info Bean . version Name ) Ġ// Ġè®¾ç½® Ġapp Ġ çīĪæľ¬ ĊĊĠĠĠĠĠĠĠ Ġvid _ aad _ re cy !!. adapter Ġ= ĠKey Value Adapter ( apk Info Item !!. list Key Values ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ= ========== ĊĠĠĠ Ġ// Ġ= ĠOnClick Ġ= ĊĠĠĠ Ġ// Ġ= ========== ĊĊĠĠĠ Ġ@ OnClick ( R . id . vid _ aad _ install _ tv , ĠR . id . vid _ aad _ delete _ tv ) ĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( v . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . vid _ aad _ install _ tv Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsource Dir Ġ= Ġapk Info Item !!. app Info Bean . source Dir ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( FileUtils . isFile Exists ( source Dir )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAndroid Ġ 8 . 0 ä»¥ä¸Ĭ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( get PackageManager (). can Request Package Install s ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Utils . install App ( source Dir ) Ġ// Ġå®īè£ħ ĠA PK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPermission Utils . permission ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . REQUEST _ INSTALL _ PACK AGES ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). call Back ( object Ġ: ĠPermission Utils . Permission CallBack Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Granted () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Utils . install App ( source Dir ) Ġ// Ġå®īè£ħ ĠA PK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Denied ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgranted List : ĠList < String >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdenied List : ĠList < String >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnot Found List : ĠList < String > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġbuilder Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (" çĶ³è¯· éĢļè¿ĩ çļĦ æĿĥéĻĲ " Ġ+ ĠArrays . toString ( gr anted List . to Typed Array ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( StringUtils . NEW _ LINE _ STR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (" æĭ Ĵ ç»Ŀ çļĦ æĿĥéĻĲ " Ġ+ Ġdenied List . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( StringUtils . NEW _ LINE _ STR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (" æľª æī¾åĪ° çļĦ æĿĥéĻĲ " Ġ+ Ġnot Found List . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( den ied List . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDev Logger . d ( builder . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast Tint Utils . info ( Resource Utils . getString ( R . string . str _ install _ request _ tips )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ è·³è½¬ è®¾ç½® é¡µéĿ¢ , Ġ å¼ĢåĲ¯ å®īè£ħ æľª çŁ¥ åºĶçĶ¨ æĿĥéĻĲ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent Utils . get Launch App Install Permission Settings Intent ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Granted () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}). request ( A pk Details Activity @ Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ġ// Ġå®īè£ħ ĠA PK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Utils . install App ( source Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast Tint Utils . warning ( Resource Utils . getString ( R . string . str _ file _ not _ exist )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . vid _ aad _ delete _ tv Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsource Dir Ġ= Ġapk Info Item !!. app Info Bean . source Dir ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( FileUtils . isFile Exists ( source Dir )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFileUtils . delete File ( source Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Bus Utils . post ( File Delete Event ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast Tint Utils . success ( Resource Utils . getString ( R . string . str _ delete _ suc )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast Tint Utils . warning ( Resource Utils . getString ( R . string . str _ file _ not _ exist )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ======== ĊĠĠĠ Ġ// Ġ= ĠMenu Ġ= ĊĠĠĠ Ġ// Ġ======== ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . bar _ menu _ apk _ info , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate Options Menu ( menu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . b mpi _ export _ apk _ msg Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHandler Utils . post Runnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapp Info Bean Ġ= Ġapk Info Item !!. app Info Bean ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åºĶçĶ¨ åĲį _ åĮħ åĲį _ çīĪæľ¬ åĲį . txt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠfileName Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Info Bean . appName Ġ+ Ġ"_" Ġ+ Ġapp Info Bean . app Pack Name Ġ+ Ġ"_" Ġ+ Ġapp Info Bean . version Name Ġ+ Ġ". txt " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ å¯¼åĩº æķ°æį® ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= ĠFileUtils . save File ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFileUtils . getFile ( Path Config . A EP _ AP K MSG _ PATH , ĠfileName ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProject Utils . toJson ( apk Info Item )?. toByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast Tint Utils . success ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResource Utils . getString ( R . string . str _ export _ suc ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" Ġ" Ġ+ ĠPath Config . A EP _ AP K MSG _ PATH Ġ+ ĠfileName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast Tint Utils . error ( Resource Utils . getString ( R . string . str _ export _ fail )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} Ċ }