package Ġcom . example . android _ study . android . webview . interaction . js _ call _ android Ċ Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . webkit .* Ċ import Ġcom . example . android _ study . R Ċ import Ġcom . example . android _ study ._ base . Base Fragment Ċ import Ġcom . example . android _ study ._ base . cmd . Cmd Util Ċ import Ġkotlinx . android . synt hetic . main . fragment _ android _ webview _ interaction _ js _ call .* ĊĊ Ċ /** Ċ Ġ* ĠAuthor : create Ġby ĠR hy thm Coder Ċ Ġ* ĠDate : 2 0 2 1 / 6 / 4 Ċ Ġ* ĠDescription : Ċ Ġ*/ Ċ class ĠJs Call Android Fragment Ġ: ĠBase Fragment () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlayout Inflater . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . fragment _ android _ webview _ interaction _ js _ call , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// 1 . éħįç½® ĊĠĠĠĠĠĠĠ Ġweb view . settings . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ä¸Ģå®ļ è¦ģ è®¾ç½® è¯¥ å±ŀæĢ§ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjava Script Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ä¸Ģå®ļ è¦ģ è®¾ç½® è¯¥ å±ŀæĢ§ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdom Storage Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjava Script Can Open Windows Autom atically Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset App Cache Enabled ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset App Cache Path ( require Context (). cacheDir . absolute Path ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġweb view . load Url (" file :/// android _ asset / Interaction _ js _ call . html ") ĊĊĠĠĠĠĠĠĠ Ġ// 2 . æ³¨åĨĮ Js è°ĥçĶ¨ Android æİ¥åı£ ĊĠĠĠĠĠĠĠ Ġweb view . add Javascript Interface ( Js Interface ( require Context ()), Ġ" android Interface ") ĊĊĠĠĠĠĠĠĠ Ġweb view . web Chrome Client Ġ= Ġobject Ġ: ĠWeb Chrome Client () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Js Alert ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview : ĠWebView ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult : ĠJs Result ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCmd Util . v ("$ message ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuri Ġ= ĠUri . parse ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(" js " Ġ== Ġuri ?. scheme ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( uri . authority . equals (" webview ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstr Ġ= Ġuri . getQuery Parameter ( uri . query Parameter Names ?. elementAt ( 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJs Interface ( require Context ()). startActivity ( str ? :" ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult ?. confirm () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Js Alert ( view , Ġurl , Ġmessage , Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġweb view . web View Client Ġ= Ġobject Ġ: ĠWebView Client () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshould Override Url Loading ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview : ĠWebView ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest : ĠWeb Resource Request ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCmd Util . v ("${ request ?. url }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuri Ġ= Ġrequest ?. url ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(" js " Ġ== Ġuri ?. scheme ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( uri . authority . equals (" webview ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstr Ġ= Ġuri . getQuery Parameter ( uri . query Parameter Names ?. elementAt ( 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJs Interface ( require Context ()). startActivity ( str ? :" ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . should Override Url Loading ( view , Ġrequest ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }