package Ġjp . hit u zi . k am ome . sample Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . util . Log Ċ import Ġandroid . webkit . WebView Ċ import Ġandroid . widget . Image Button Ċ import Ġjp . hit u zi . k am ome . Command Ċ import Ġjp . hit u zi . k am ome . Client Ċ import Ġjp . hit u zi . k am ome . Client . SendMessage Callback Ċ import Ġjava . util .* Ċ Ċ class ĠMainActivity Ġ: ĠActivity () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" K am ome Sample " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġclient : ĠClient ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġaction Bar ?. hide () ĊĊĠĠĠĠĠĠĠ Ġval ĠwebView Ġ= ĠfindViewById < WebView >( R . id . web View ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreates Ġthe ĠClient Ġobject Ġwith Ġthe ĠwebView . ĊĠĠĠĠĠĠĠ Ġclient Ġ= ĠClient ( web View ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( Command (" echo ") Ġ{ Ġcommand Name , Ġdata , Ġcompletion Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠReceived Ġ` echo ` Ġcommand . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThen Ġsends Ġresolved Ġresult Ġto Ġthe ĠJavaScript Ġcallback Ġfunction . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Ġ= ĠHashMap < String ?, ĠAny ?> () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap [" message "] Ġ= Ġdata !!. opt String (" message ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompletion . resolve ( map ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( Command (" echo Error ") Ġ{ Ġcommand Name , Ġdata , Ġcompletion Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSends Ġrejected Ġresult Ġif Ġfailed . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompletion . reject (" Echo ĠError !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( Command (" too Long ") Ġ{ Ġcommand Name , Ġdata , Ġcompletion Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠToo Ġlong Ġprocess ... ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHandler (). post Delayed ({ Ġcompletion . resolve () Ġ}, Ġ( 3 0 Ġ* Ġ 1 0 0 0 ). to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġclient ?. how To Handle Non Ex istent Command Ġ= ĠClient . How To Handle Non Ex istent Command . RE JECT ED ĊĊĠĠĠĠĠĠĠ ĠwebView . load Url (" file :/// android _ asset / www / index . html ") ĊĊĠĠĠĠĠĠĠ Ġval Ġsend Button Ġ= ĠfindViewById < Image Button >( R . id . send Button ) ĊĠĠĠĠĠĠĠ Ġsend Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSends Ġa Ġdata Ġto Ġthe ĠJS Ġcode . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠHashMap < String ?, ĠAny ?> () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata [" greeting "] Ġ= Ġ" Hello ! Ġby ĠKotlin " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient ?. send ( data , Ġ" greeting ", ĠSend Message Callback Ġ{ Ġcommand Name , Ġresult , Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠReceived Ġa Ġresult Ġfrom Ġthe ĠJS Ġcode . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" result : Ġ$ result ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ