package Ġcom . mat vey ev . buy faster Ċ Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . net . Uri Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Settings Ċ import Ġandroid . view . View Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġcom . mat vey ev . buy faster . databinding . Activity The List Binding Ċ import Ġkotlinx . android . synt hetic . main . activity _ the _ list .* Ċ import Ġjava . lang . Exception Ċ import Ġcom . google . firebase . analytics . Firebase Analytics ĊĊ Ċ class ĠThe List Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfirebase Analytics : ĠFirebase Analytics ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠThe List ViewModel ĊĊĠĠĠ Ġprivate Ġval Ġvi ber PackageName Ġ= Ġ" com . vi ber . vo ip " ĊĠĠĠ Ġprivate Ġval Ġsk ype PackageName Ġ= Ġ" com . skype . ra ider " ĊĠĠĠ Ġprivate Ġval Ġwh ats app PackageName Ġ= Ġ" com . whats app " ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsms PackageName : ĠString ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġfirebase Analytics Ġ= ĠFirebase Analytics . getInstance ( this ) ĊĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ the _ list ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbinding : ĠActivity The List Binding Ġ= ĠData Binding Util . set ContentView ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĠR . layout . activity _ the _ list ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Providers . of ( this ). get ( The List ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġapp Ġ= Ġthis . application Ġas ĠBu y F aster App ĊĠĠĠĠĠĠĠ ĠviewModel . the List Repo Ġ= Ġapp . the List Repository . value ĊĠĠĠĠĠĠĠ ĠviewModel . deps Repo Ġ= Ġapp . deps Repository . value ĊĠĠĠĠĠĠĠ ĠviewModel . refresh () ĊĠĠĠĠĠĠĠ Ġbinding . viewModel Ġ= ĠviewModel ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġicon Ġ= Ġapplication Context . package Manager . getApplication Icon ( vi ber PackageName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvi ber Button . setImage Drawable ( icon ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvi ber Button . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġicon Ġ= Ġapplication Context . package Manager . getApplication Icon ( skype PackageName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsk ype Button . setImage Drawable ( icon ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsk ype Button . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġicon Ġ= Ġapplication Context . package Manager . getApplication Icon ( whats app PackageName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwh ats app Button . setImage Drawable ( icon ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwh ats app Button . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsms PackageName Ġ= Ġ" com . android . m ms " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġicon Ġ= Ġapplication Context . package Manager . getApplication Icon ( sms PackageName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsms Button . setImage Drawable ( icon ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsms PackageName Ġ= Ġget Sms PackageName () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġicon Ġ= Ġapplication Context . package Manager . getApplication Icon ( sms PackageName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsms Button . setImage Drawable ( icon ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsms Button . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfirebase Analytics . log Event ( Firebase Analytics . Event . APP _ OPEN , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Sms PackageName () Ġ: ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdef App Ġ= ĠSettings . Secure . getString ( content Resolver , Ġ" sms _ default _ application ") ĊĠĠĠĠĠĠĠ Ġval Ġpm Ġ= Ġapplication Context . package Manager ĊĠĠĠĠĠĠĠ Ġval Ġi Intent Ġ= Ġpm . get Launch Intent For Package ( def App ) ĊĠĠĠĠĠĠĠ Ġval Ġm Info Ġ= Ġpm . resolve Activity ( i Intent , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġm Info . activity Info . packageName ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Subject ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġadd Sub j Dialog Ġ= ĠAdd Subject Dialog Fragment ( viewModel . depart ments Auto Complete ) ĊĠĠĠĠĠĠĠ Ġadd Sub j Dialog . positive Ġ= ĠDialog Interface . OnClickListener Ġ{ Ġ_, Ġ_ Ġ-> ĠviewModel . add Subject Async ( add Sub j Dialog . viewModel . subject ) Ġ} ĊĠĠĠĠĠĠĠ Ġadd Sub j Dialog . show ( support FragmentManager , Ġ" add Subject ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġvi ber ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsend ( vi ber PackageName ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsk ype ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsend ( skype PackageName ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwh ats app ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsend ( whats app PackageName ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend ( packageName : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif (! is Package Installed ( packageName , Ġapplication Context . package Manager )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( Intent . ACTION _ VIEW , ĠUri . parse (" market :// details ? id =$ packageName "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= ĠviewModel . getMessage Content () ĊĠĠĠĠĠĠĠ Ġval Ġsend Intent Ġ= ĠIntent ( Intent . ACTION _ SEND ) ĊĠĠĠĠĠĠĠ Ġsend Intent . type Ġ= Ġ" text / plain " ĊĠĠĠĠĠĠĠ Ġsend Intent . set Package ( packageName ) ĊĠĠĠĠĠĠĠ Ġsend Intent . putExtra ( Intent . EXTRA _ TEXT , Ġcontent ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( send Intent ) ĊĠĠĠĠĠĠĠ Ġhide Send Buttons () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsms ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsend ( sms PackageName ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide Send Buttons () Ġ{ ĊĠĠĠĠĠĠĠ Ġsend Buttons . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġshow Send Buttons . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsend ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsend Buttons . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġshow Send Buttons . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Package Installed ( name : ĠString , Ġpackage Manager : ĠPackage Manager ) Ġ: ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Manager . getApplication Info ( name , Ġ 0 ). enabled ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠPackage Manager . Name NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ