package Ġcom . s dex . activity runner . app Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . content . pm . Activity Info Ċ import Ġandroidx . annotation . Worker Thread Ċ import Ġandroidx . lifecycle . Android ViewModel Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . s dex . activity runner . preferences . App Preferences Ċ import Ġcom . s dex . commons . pm . get Package Info Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠActiv ities List ViewModel ( application : ĠApplication ) Ġ: ĠAndroid ViewModel ( application ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġpackage Manager Ġ= Ġapplication . package Manager ĊĠĠĠ Ġprivate Ġval Ġapp Preferences Ġby Ġlazy Ġ{ ĠApp Preferences ( application ) Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġlive Data Ġ= ĠMutable LiveData < List < Activity Model >>() ĊĠĠĠ Ġprivate Ġvar Ġlist : ĠList < Activity Model >? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġget Items ( packageName : ĠString ): ĠLive Data < List < Activity Model >> Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Ġ= Ġget Activities List ( packageName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlive Data . post Value ( list ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlive Data ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreload Items ( packageName : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Ġ= Ġget Activities List ( packageName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlive Data . post Value ( list ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfilter Items ( packageName : ĠString , Ġsearch Text : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( list Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( search Text Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfilter edList Ġ= Ġlist !!. filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . name . contains ( search Text , Ġtrue ) Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . className . contains ( search Text , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlive Data . post Value ( filter edList ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlive Data . value Ġ= Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Items ( packageName ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Worker Thread ĊĠĠĠ Ġprivate Ġfun Ġget Activities List ( packageName : ĠString ) Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġshow Not Exported Ġ= Ġapp Preferences . show Not Exported ĊĠĠĠĠĠĠĠ Ġget Package Info ( package Manager , ĠpackageName ). activities ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . to Activity Model () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . exported Ġ|| Ġshow Not Exported Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted By Ġ{ Ġit . name Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . e ( e ) ĊĠĠĠĠĠĠĠ Ġempty List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠActivity Info . to Activity Model () Ġ= ĠActivity Model ( ĊĠĠĠĠĠĠĠ Ġname . split (". "). last (), ĠpackageName , Ġname , Ġexported Ġ&& Ġis Enabled ĊĠĠĠ Ġ) Ċ } Ċ