package Ġcom . ath lon . common lib . util Ċ Ċ import Ġjava . io . ByteArray OutputStream Ċ import Ġjava . io . IOException Ċ import Ġjava . io . InputStream Ċ Ċ class ĠInstall Util Ġ{ ĊĊĊĠĠĠ Ġfun Ġbg Install A pk ( apk AbsolutePath : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf (" pm ", Ġ" install ", Ġ"- r ", Ġapk AbsolutePath ) ĊĠĠĠĠĠĠĠ Ġvar Ġresult : ĠString ? Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġprocess Builder Ġ= ĠProcess Builder (* args ) ĊĠĠĠĠĠĠĠ Ġvar Ġprocess : ĠProcess ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġerr Is : ĠInputStream ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġin Is : ĠInputStream ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġba os Ġ= ĠByteArrayOutputStream () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġread Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprocess Ġ= Ġprocess Builder . start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerr Is Ġ= Ġprocess . error Stream ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( err Is . read (). also ({ Ġread Ġ= Ġit Ġ}) Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġba os . write ( read ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġba os . write ("/ n ". toByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin Is Ġ= Ġprocess . inputStream ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( in Is . read (). also ({ Ġread Ġ= Ġit Ġ}) Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġba os . write ( read ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata : ĠByteArray Ġ= Ġba os . toByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= ĠString ( data ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( err Is Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerr Is . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( in Is Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Is . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprocess ?. destroy () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ Ċ }