package Ġru . lap ov . for r abit result . activities Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . annotation . Target Api Ċ import Ġandroid . content . Activity NotFoundException Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Activity Compat Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . util . Log Ċ import Ġandroid . webkit .* Ċ import Ġandroid . widget . Toast Ċ import Ġkotlinx . android . synt hetic . main . activity _ web .* Ċ import Ġru . lap ov . for r abit result . R Ċ Ċ class ĠWebView Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġvar Ġcurrent Url : ĠString ? Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġupload Message : ĠValue Callback < Array < Uri >> ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Upload Message : ĠValue Callback < Uri >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval ĠP ICK _ FROM _ G ALL ERY Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġval ĠP ICK _ FROM _ G ALL ERY _ 2 Ġ= Ġ 2 ĊĠĠĠ Ġprivate Ġval ĠP ICK _ FROM _ G ALL ERY _ 3 Ġ= Ġ 3 ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ web ) ĊĠĠĠĠĠĠĠ Ġcurrent Url Ġ= Ġintent . getString Extra ( KEY _ URL ) ĊĠĠĠĠĠĠĠ Ġcheck Permissions () ĊĠĠĠĠĠĠĠ Ġinit WebView () ĊĠĠĠĠĠĠĠ Ġswipe Refresh . setOn Refresh Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Refresh . is Refresh ing Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Permissions () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Activity Compat . check Self Permission ( this , ĠManifest . permission . READ _ EXTERNAL _ STORAGE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( Manifest . permission . READ _ EXTERNAL _ STORAGE , ĠManifest . permission . WRITE _ EXTERNAL _ STORAGE ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP ICK _ FROM _ G ALL ERY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġinit WebView () Ġ{ ĊĠĠĠĠĠĠĠ ĠwebView . web Chrome Client Ġ= Ġobject Ġ: ĠWeb Chrome Client () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Show FileChooser ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠwebView : ĠWebView ?, ĠfilePath Callback : ĠValue Callback < Array < Uri >> ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Chooser Params : ĠFile Chooser Params ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( upload Message Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupload Message ?. on Receive Value ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupload Message Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupload Message Ġ= ĠfilePath Callback ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġintent : ĠIntent ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent Ġ= Ġfile Chooser Params ?. create Intent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , ĠP ICK _ FROM _ G ALL ERY _ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠActivity NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupload Message Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , Ġ" Cannot ĠOpen ĠFile ĠCho oser ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Js Alert ( view : ĠWebView ?, Ġurl : ĠString ?, Ġmessage : ĠString ?, Ġresult : ĠJs Result ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Log Tag ", Ġmessage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult ?. confirm () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠwebView . web View Client Ġ= Ġobject Ġ: ĠWebView Client () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Target Api ( Build . VERSION _ CODES . N ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshould Override Url Loading ( view : ĠWebView ?, Ġrequest : ĠWeb Resource Request ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuri Ġ= Ġrequest ?. url ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġshould Override Url Loading ( uri . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deprecated (" should Override Url Loading ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshould Override Url Loading ( view : ĠWebView , Ġurl : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġshould Override Url Loading ( url Ġ?: Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġfun Ġshould Override Url Loading ( url : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( url . startsWith (" market ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( Intent . ACTION _ VIEW , ĠUri . parse ( url ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Url Ġ= Ġurl ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" WebView ", Ġ" get ĠUrl Ġ$ current Url ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Finished ( view : ĠWebView ?, Ġurl : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Page Finished ( view , Ġurl ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠwebView . clear Cache ( true ) ĊĠĠĠĠĠĠĠ ĠwebView . clear History () ĊĠĠĠĠĠĠĠ ĠwebView . setInitial Scale ( 1 ) ĊĠĠĠĠĠĠĠ ĠwebView . settings . java Script Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠwebView . settings . load With Overview Mode Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠwebView . settings . use Wide View Port Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠwebView . settings . java Script Can Open Windows Autom atically Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠwebView . scroll Bar Style Ġ= ĠWebView . SCROLL BAR S _ OUT SIDE _ OVER LAY ĊĠĠĠĠĠĠĠ ĠwebView . is Scrollbar F ading Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ ĠwebView . settings . built In Zoom Controls Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠwebView . settings . display Zoom Controls Ġ= Ġfalse ĊĠĠĠĠĠĠĠ ĠwebView . settings . dom Storage Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġload () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload () Ġ{ ĊĠĠĠĠĠĠĠ ĠwebView . load Url ( current Url ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠP ICK _ FROM _ G ALL ERY _ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( upload Message Ġ== Ġnull ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupload Message ?. on Receive Value ( Web Chrome Client . FileChooser Params . parse Result ( result Code , Ġdata )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupload Message Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( request Code Ġ== ĠP ICK _ FROM _ G ALL ERY _ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( null Ġ== Ġm Upload Message ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġif Ġ( data Ġ== Ġnull Ġ|| ĠresultCode Ġ!= ĠRESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . data ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Upload Message ?. on Receive Value ( result ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Upload Message Ġ= Ġnull ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( web View . can Go Back ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠwebView . go Back (); ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed (); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠKEY _ URL Ġ= Ġ" url " ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance ( context : ĠContext , Ġurl : ĠString ?): ĠIntent Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( context , ĠWebView Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. putExtra ( KEY _ URL , Ġurl ) ĊĠĠĠ Ġ} Ċ }