package Ġcom . co oper the coder . apk scan . interact Ċ Ċ import Ġandroid . content . Component Name Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . Package Item Info Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Parcelable Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . co oper the coder . apk scan . R Ċ import Ġkotlinx . android . synt hetic . main . activity _ interact .* Ċ import Ġkotlinx . android . synt hetic . main . activity _ interact . toolbar Ċ import Ġkotlinx . android . synt hetic . main . activity _ scan _ results .* Ċ import Ġkotlinx . android . synt hetic . main . package _ list _ item .* Ċ Ċ class ĠInter act Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCOMPONENT _ TYPE Ġ= Ġ" component _ type " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCLASS _ NAME Ġ= Ġ" class _ name " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPACK AGE _ NAME Ġ= Ġ" package _ name " ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTYPE _ ACTIVITY Ġ= Ġ" activity " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTYPE _ SERVICE Ġ= Ġ" service " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTYPE _ RECE IVER Ġ= Ġ" receiver " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ interact ) ĊĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Show Home Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġtoolbar . set Navigation OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġval Ġcomponent Type Ġ= Ġintent . getString Extra ( COMPONENT _ TYPE ) !! ĊĠĠĠĠĠĠĠ Ġval ĠclassName Ġ= Ġintent . getString Extra ( CLASS _ NAME ) !! ĊĠĠĠĠĠĠĠ Ġval ĠpackageName Ġ= Ġintent . getString Extra ( PACKAGE _ NAME ) !! ĊĊĠĠĠĠĠĠĠ Ġval Ġcomponent Name Ġ= ĠComponent Name ( packageName , ĠclassName ) ĊĠĠĠĠĠĠĠ Ġval Ġcomponent Info : ĠPackage Item Info Ġ= Ġwhen Ġ( component Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTYPE _ ACTIVITY Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Manager . getActivity Info ( component Name , ĠPackage Manager . GET _ META _ DATA ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠTYPE _ RECE IVER Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Manager . get Receiver Info ( component Name , ĠPackage Manager . GET _ META _ DATA ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠTYPE _ SERVICE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Manager . getService Info ( component Name , ĠPackage Manager . GET _ META _ DATA ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Illegal Ġcomponent Ġtype Ġ$ component Type ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġicon . setImage Drawable ( component Info . load Icon ( package Manager )) ĊĠĠĠĠĠĠĠ Ġapp Title . text Ġ= Ġcomponent Info . load Label ( package Manager ) ĊĠĠĠĠĠĠĠ Ġapp Title PackageName . text Ġ= ĠpackageName ĊĠĠĠĠĠĠĠ Ġactivity Name . text Ġ= Ġcomponent Info . name ĊĊĠĠĠĠĠĠĠ Ġsend Intent Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent ToSend Ġ= ĠIntent (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomponent Ġ= ĠComponent Name ( component Info . packageName , Ġcomponent Info . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Uri Ġ= Ġdata Uri Field . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Uri Ġ!= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= ĠUri . parse ( data Uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflags Ġ= ĠIntent . FLAG _ ACTIVITY _ NEW _ TASK ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Interact With Component ( component Type , Ġintent ToSend ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Interact With Component ( component Type : ĠString , Ġintent ToSend : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpackage Interaction Ġ= ĠPackage Interaction ( this ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( component Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTYPE _ ACTIVITY Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Interaction . startActivity ( intent ToSend ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠTYPE _ SERVICE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Interaction . start Service ( intent ToSend ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠTYPE _ RECE IVER Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Interaction . send Broadcast ( intent ToSend ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Invalid Ġcomponent Ġtype Ġ$ component Type ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" Intent Ġsent ", ĠToast . LENGTH _ LONG ). show () ĊĊĠĠĠ Ġ} Ċ }