package Ġcom . stone . template app . extensions Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . webkit . Web Settings Ċ import Ġandroid . webkit . WebView Ċ import Ġcom . stone . log . Logs Ċ import Ġcom . stone . template app . R Ċ import Ġcom . stone . template app . module . web . My Down Listener Ċ Ċ /** Ċ Ġ* Ġ åħ³äºİ WebView åıĬ åħ¶ éĻĦ å±ŀ ç±»çļĦ ä¸ĢäºĽ åĩ½æķ° æī©å±ķ Ċ Ġ*/ Ċ Ċ /** Ċ Ġ* Ġä½¿çĶ¨ æŃ¤ é¡¹ éľĢè¦ģ æ³¨æĦı çļĦæĺ¯ ï¼Į WebView ä¾Ŀèµĸ çļĦ ä¸Ĭä¸ĭ æĸĩ éľĢè¦ģ æĺ¯ Activity ĠContext ï¼Į èĢĮ éĿŀ Application ĠContext Ċ Ġ*/ Ċ internal Ġval ĠWebView . activity : ĠActivity ĊĠĠĠ Ġget () Ġ= Ġctx Ġas ĠActivity ĊĊ Ċ /** Ċ Ġ* Ġæł¹æį® é¡¹çĽ® éľĢè¦ģ ï¼Į éħįç½® WebView Ċ Ġ*/ Ċ @ Suppress Lint (" Set JavaScript Enabled ") Ċ internal Ġfun ĠWebView . custom Setting () Ġ{ ĊĠĠĠ Ġsettings . java Script Enabled Ġ= Ġtrue ĊĠĠĠ Ġsettings . default Text Encoding Name Ġ= Ġ" UTF - 8 " ĊĠĠĠ Ġsettings . dom Storage Enabled Ġ= Ġtrue ĊĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsettings . mixed Content Mode Ġ= ĠWeb Settings . MIX ED _ CONTENT _ ALWAYS _ ALLOW ĊĠĠĠ Ġ} ĊĠĠĠ ĠLogs . e (" Web Activity ", Ġ" init WebView : Ġ" Ġ+ Ġsettings . userAgent String ) ĊĠĠĠ Ġ// è®¾ç½® ä¸ĭè½½ çĽĳåĲ¬ ĊĠĠĠ Ġset Download Listener ( My Down Listener ( activity )) Ċ } Ċ Ċ /** Ċ Ġ* Ġload URL ä¹ĭåīį ï¼Į éĴĪå¯¹ URL åģļ çī¹å®ļ è¿ĩæ»¤ å¤ĦçĲĨ Ċ Ġ*/ Ċ internal Ġfun ĠWebView . load Url With Check ( url : ĠString ?) Ġ{ ĊĠĠĠ Ġif Ġ( url . isNull OrEmpty ()) Ġreturn ĊĠĠĠ Ġelse Ġload Url ( url ) Ċ } Ċ Ċ /** Ċ Ġ* ĠWebView Client . should Override Url Loading èĩªå®ļä¹ī éĢ»è¾ĳ å¤ĦçĲĨ Ċ Ġ* Ġ@ return Ġtrue : Ġä½¿çĶ¨ èĩªå®ļä¹ī éĢ»è¾ĳ å¤ĦçĲĨ äºĨ å½ĵåīį çļĦ URL ï¼Į éĺ» æĭ ¦ WebView é»ĺè®¤ éĢ»è¾ĳ çļĦ æī§è¡Į ï¼Ľ false ï¼ļ åı¯ èĩªå®ļä¹ī éĢ»è¾ĳ ï¼Į ä½Ĩæĺ¯ ä¸į éĺ» æĭ ¦ WebView çļĦ é»ĺè®¤ éĢ»è¾ĳ æī§è¡Į Ċ Ġ*/ Ċ internal Ġfun ĠWebView . override Url Loading ( url : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠ Ġif Ġ( url Ġ== Ġnull ) Ġreturn Ġtrue ĊĠĠĠ Ġif Ġ( url . startsWith (" tel :" )) Ġ{// æĶ¯æĮģ ç½ĳ é¡µ æĭ ¨ åı· ĊĠĠĠĠĠĠĠ Ġif Ġ( activity . isValid ()) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġtodo Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠDialog MD ( activity , Ġ" æĺ¯åĲ¦ æĭ ¨ æīĵ çĶµ è¯Ŀ ï¼ļ \ n $ url ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setDefault Btn Negative () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Listener Ġ{ Ġ_, Ġ_ Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ DI AL , ĠUri . parse ( url )) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . startActivity ( intent ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġif Ġ( url . startsWith (" weixin :// ") Ġ|| Ġurl . startsWith (" intent :// ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Url : ĠString Ġ= Ġif Ġ( url . startsWith (" intent :// ") Ġ&& Ġurl . contains (" com . tencent . mm ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl . replace (" intent :// ", Ġ" weixin :// ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ VIEW , ĠUri . parse ( result Url )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity . isValid ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . startActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġfalse Ċ } Ċ Ċ /** Ċ Ġ* Ġå°Ĩ Web Activity è®¾ç½® æłĩé¢ĺ çļĦæĸ¹æ³ķ ï¼Į æī©å±ķ åĪ° WebView ä¸Ń ï¼Į éģ¿åħį Chrome Client çļĦ receive Title åĽŀè°ĥ ä¸Ń çĽ´æİ¥ å¼ķçĶ¨ Web Activity çļĦæĸ¹æ³ķ Ċ Ġ*/ Ċ internal Ġfun ĠWebView . setTitle ( title : ĠString ?) Ġ{ ĊĠĠĠ Ġif Ġ( title . isNull OrEmpty () Ġ|| Ġtitle !!. contains (" http ") Ġ|| Ġtitle . contains (" da iq ian b ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity . setTitle ( R . string . app _ name ) ĊĠĠĠ Ġ} Ġelse Ġif Ġ( title Ġ== Ġ" æī¾ ä¸įåĪ° ç½ĳ é¡µ " Ġ|| Ġtitle Ġ== Ġ" ç½ĳ é¡µ æĹłæ³ķ æīĵå¼Ģ ") Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity . title Ġ= Ġ" ç½ĳç»ľ è¿ŀæİ¥ å¤±è´¥ " ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity . title Ġ= Ġtitle ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// è®¾ç½® title ĊĠĠĠ ĠLogs . i (" Web Activity ", Ġ" setTitle () Ġcalled Ġwith : Ġtitle Ġ= Ġ[$ title ]") ĊĠĠĠ ĠLogs . i (" Web Activity ", Ġ" setTitle : ĠwebView . get Original Url () Ġ= Ġ" Ġ+ Ġthis ?. original Url ) Ċ } Ċ Ċ /** Ċ Ġ* Ġ éĶĢ æ¯ ģ WebView Ċ Ġ*/ Ċ internal Ġfun ĠWebView ?. self Destroy () Ġ{ ĊĠĠĠ Ġif Ġ( this Ġ== Ġnull ) Ġreturn ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġsettings . built In Zoom Controls Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠThrowable ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġstop Loading () ĊĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠThrowable ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġremove All Views () ĊĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠThrowable ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġweb Chrome Client Ġ= Ġnull ĊĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠThrowable ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ ĠwebView Client Ġ= Ġnull ĊĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠThrowable ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġdestroy () ĊĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠThrowable ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( null Ġ!= Ġparent Ġ&& Ġparent Ġis ĠViewGroup ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( parent Ġas ĠViewGroup ). remove View ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠThrowable ) Ġ{ ĊĊĠĠĠ Ġ} Ċ }