package Ġcom . jiang k ang . hybrid . web Ċ Ċ import Ġandroid . annotation . Target Api Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . os . Build Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . util . Log Ċ import Ġandroid . webkit .* Ċ import Ġcom . jiang k ang . tools . utils . FileUtils ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby Ġji ang k ang Ġon Ġ 2 0 1 7 / 9 / 2 0 . Ċ Ġ*/ Ċ Ċ class ĠK WebView Client Ġ: ĠWebView Client Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġ" K WebView Client " ĊĊĠĠĠ Ġprivate Ġval ĠmContext : ĠWeb Contract . I View ĊĊĠĠĠ Ġprivate Ġval Ġm Web Args : ĠWeb Args ĊĊĠĠĠ Ġconstructor ( context : ĠWeb Contract . I View , Ġweb Args : ĠWeb Args ) Ġ: Ġsuper () Ġ{ ĊĠĠĠĠĠĠĠ ĠmContext Ġ= Ġcontext ĊĠĠĠĠĠĠĠ Ġm Web Args Ġ= Ġweb Args ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// TODO : ĠKotlin Ġ ä¼łåħ¥ çļĦåıĤæķ° ç±»åŀĭ è¦ģ æ³¨æĦı ä¸º null çļĦ æĥħåĨµ ï¼Į å¦Ĥæŀľ ä¸į ä¿®æĶ¹ éĩį è½½ åĩ½æķ° åıĤæķ° ç±»åŀĭ ï¼Į ä¼ļ åĩºçİ° è¿Ĳè¡Į æĹ¶ éĶĻè¯¯ ĊĠĠĠ Ġoverride Ġfun Ġon Page Started ( view : ĠWebView , Ġurl : ĠString , Ġfav icon : ĠBitmap ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Page Started ( view , Ġurl , Ġfav icon ) ĊĠĠĠĠĠĠĠ Ġif Ġ( m Web Args . is Load Img Lazy ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . settings . block Network Image Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Target Api ( Build . VERSION _ CODES . LO L LI POP ) ĊĠĠĠ Ġoverride Ġfun Ġshould Override Url Loading ( view : ĠWebView , Ġrequest : ĠWeb Resource Request ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . should Override Url Loading ( view , Ġrequest ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Page Finished ( view : ĠWebView , Ġurl : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Page Finished ( view , Ġurl ) ĊĠĠĠĠĠĠĠ Ġif Ġ( m Web Args . is Load Img Lazy ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . settings . block Network Image Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! TextUtils . isEmpty ( m Web Args . js Inject ed )){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinject Js File ( view , m Web Args . js Inject ed ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġquery History List ( view : ĠWebView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhistory List Ġ= Ġview . copy Back Forward List () ĊĠĠĠĠĠĠĠ Ġif Ġ( history List Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġhistory List . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠcurrentIndex Ġ= Ġhistory List . currentIndex ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( 0 .. ( size Ġ- Ġ 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ"$ it -${ history List . getItem AtIndex ( it )?. title }-${ history List . getItem AtIndex ( it )?. url }" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinject Js File ( view : ĠWebView , Ġjs String : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . load Url (" javascript :$ js String ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Scale Changed ( view : ĠWebView , Ġold Scale : ĠFloat , Ġnew Scale : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Scale Changed ( view , Ġold Scale , Ġnew Scale ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Target Api ( Build . VERSION _ CODES . LO L LI POP ) ĊĠĠĠ Ġoverride Ġfun Ġshould Intercept Request ( view : ĠWebView , Ġrequest : ĠWeb Resource Request ): ĠWeb Resource Response ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// æŃ¤ å¤Ħ å¯¹ æĸĩä»¶ èµĦæºĲ ï¼Į js ï¼Į css çŃī è¯·æ±Ĥ èµĦæºĲ è¿Ľè¡Į æĭ ¦ æĪª ï¼Į æĽ¿æį¢ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" should Intercept Request : Ġrequest Ġ= Ġ\ n \ n url Ġ= Ġ${ request . url }\ n method Ġ= Ġ${ request . method }\ n headers Ġ= Ġ${ request . request Headers }") ĊĠĠĠĠĠĠĠ Ġif Ġ( m Web Args . is Intercept Resources ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġrequest . url . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( url . startsWith (" https :// ") Ġ|| Ġurl . startsWith (" http :// ")) Ġ&& Ġ( url . endsWith (". png ") Ġor Ġurl . endsWith (". jpg "))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠWeb Resource Response ( MimeType Map . getFile Extension From Url (". jpg "), Ġ" utf - 8 ", ĠFileUtils . getInputStream From Assets (" img / dog . jpg ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . should Intercept Request ( view , Ġrequest ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġchange Bg Color ( web View : WebView ){ ĊĠĠĠĠĠĠĠ Ġval Ġchange Body Bg Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( function (){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdocument . body . style . backgroundColor Ġ= Ġ" rgba ( 0 , 0 , 0 , 1 2 5 )" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ})(); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġinject Js File ( web View , change Body Bg ) ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ