package Ġcom . zz r . jet pack test . activity Ċ Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . webkit . WebView Ċ import Ġandroid . webkit . WebView Client Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . zz r . jet pack test . databinding . Activity Test Web 2 Binding Ċ import Ġcom . zz r . jet pack test . entity . Android to Js Ċ Ċ class ĠTest Web Activity 2 Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) Ċ // ĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ test _ web 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠActivity Test Web 2 Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĊĠĠĠĠĠĠĠ Ġval Ġweb Settings Ġ= Ġbinding . web View 2 . settings ĊĠĠĠĠĠĠĠ Ġweb Settings . java Script Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ// ĠéĢļè¿ĩ add Javascript Interface () å°Ĩ Java å¯¹è±¡ æĺłå°Ħ åĪ° JS å¯¹è±¡ ĊĠĠĠĠĠĠĠ Ġ// åıĤæķ° 1 ï¼ļ Javascript å¯¹è±¡ åĲį ĊĠĠĠĠĠĠĠ Ġ// åıĤæķ° 2 ï¼ļ Java å¯¹è±¡ åĲį ĊĠĠĠĠĠĠĠ Ġbinding . web View 2 . add Javascript Interface ( Android to Js (), Ġ" test ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġ åĬłè½½ JS ä»£çłģ ĊĠĠĠĠĠĠĠ Ġ// Ġ æł¼å¼ı è§Ħ å®ļ ä¸º : file :/// android _ asset / æĸĩä»¶ åĲį . html Ċ // ĠĠĠĠĠĠĠ Ġbinding . web View 2 . load Url (" file :/// android _ asset / Test Javascript 2 . html "); ĊĠĠĠĠĠĠĠ Ġbinding . web View 2 . load Url (" file :/// android _ asset / Test Javascript 3 . html "); ĊĊĊĠĠĠĠĠĠĠ Ġ// åı¦ ä¸Ģç§į æĸ¹å¼ı Ġjs è°ĥçĶ¨ Android ä»£çłģ ĊĠĠĠĠĠĠĠ Ġbinding . web View 2 . web View Client Ġ= Ġobject Ġ: ĠWebView Client () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshould Override Url Loading ( view : ĠWebView , Ġurl : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ æŃ¥éª¤ 2 ï¼ļ æł¹æį® åįıè®® çļĦåıĤæķ° ï¼Į åĪ¤æĸŃ æĺ¯åĲ¦ æĺ¯ æīĢ éľĢè¦ģ çļĦ url ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ä¸ĢèĪ¬ æł¹æį® scheme ï¼Ī åįıè®® æł¼å¼ı ï¼ī Ġ& Ġauthority ï¼Ī åįıè®® åĲį ï¼ī åĪ¤æĸŃ ï¼Ī åīį ä¸¤ä¸ª åıĤæķ° ï¼ī ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// åģĩ å®ļ ä¼łåħ¥ è¿Ľ æĿ¥çļĦ Ġurl Ġ= Ġ" js :// webview ? arg 1 = 1 1 1 & arg 2 = 2 2 2 " ï¼Ī åĲĮæĹ¶ ä¹Łæĺ¯ çº¦ å®ļ å¥½çļĦ éľĢè¦ģ æĭ ¦ æĪª çļĦ ï¼ī ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuri Ġ= ĠUri . parse ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġå¦Ĥæŀľ url çļĦ åįıè®® Ġ çŃīäºİ Ġ é¢Ħ åħĪ çº¦ å®ļçļĦ Ġjs Ġ åįıè®® ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ å°± è§£æŀĲ å¾Ģ ä¸ĭ è§£æŀĲ åıĤæķ° ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( uri . scheme Ġ== Ġ" js ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġå¦Ĥæŀľ Ġauthority Ġ Ġ= Ġ é¢Ħ åħĪ çº¦ å®ļ åįıè®® éĩĮ çļĦ Ġweb view ï¼Į åį³ ä»£è¡¨ éĥ½ ç¬¦åĲĪ çº¦ å®ļçļĦ åįıè®® ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ æīĢä»¥ æĭ ¦ æĪª url , ä¸ĭéĿ¢ JS å¼Ģå§ĭ è°ĥçĶ¨ Android éľĢè¦ģ çļĦæĸ¹æ³ķ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( uri . authority Ġ== Ġ" webview ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġ æŃ¥éª¤ 3 ï¼ļ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġæī§è¡Į JS æīĢ éľĢè¦ģ è°ĥçĶ¨ çļĦ éĢ»è¾ĳ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ Test Web Activity 2 , Ġ" js è°ĥçĶ¨ äºĨ Android çļĦæĸ¹æ³ķ ", ĠToast . LENGTH _ SHORT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġåı¯ä»¥ åľ¨ åįıè®® ä¸Ĭ å¸¦ æľī åıĤæķ° å¹¶ ä¼łéĢĴ åĪ° Android ä¸Ĭ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= Ġmutable Map Of < String , ĠString ?> () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= Ġuri . query Parameter Names ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( name Ġin Ġcollection ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ name ] Ġ= Ġuri . getQuery Parameter ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æīĵåį° ä¿¡æģ¯ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Test Web Activity 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" key == ${ it . key } Ġ Ġvalue == ${ it . value }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . should Override Url Loading ( view , Ġurl ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }