package Ġcom . cc m . lib . flex ible webview . clients Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . webkit . Http Auth Handler Ċ import Ġandroid . webkit . WebView Ċ import Ġandroid . webkit . WebView Client Ċ import Ġandroid . widget . EditText Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġcom . cc m . lib . flex ible webview . R Ċ import Ġjava . lang . ref . Weak Reference Ċ Ċ open Ġclass ĠHttp Auth WebView Client ( ĊĠĠĠ Ġprivate Ġvar Ġcontext : ĠContext ? Ġ= Ġnull Ċ ) Ġ: ĠWebView Client () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcontext Ref Ġ= ĠWeak Reference < Context >( context ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIf Ġneed Ġproceed Ġwith Ġauthentication Ġwith Ġyour Ġcredentials , Ġjust Ġset Ġyour Ġuser Ġname Ġand Ġpassword Ġhere . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠSame Ġimplementation Ġwith Ġ` Basic ĠAuthentication ĠHeader `: ĊĠĠĠĠ Ġ* Ġ- Ġ` Authorization : ĠBasic ĠW U 9 V Ul 9 VU 0 V ST k FN RT p ZT 1 VS X 1 B BU 1 NX T 1 JE ` ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠRemark : ĠSecurity ĠEn caps ulation Ġof Ġname Ġand Ġpassword Ġshould Ġbe Ġhandled Ġby Ġyou . ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġvar ĠuserName : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġuser Pass : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext Ġ= Ġcontext Ref . get () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Received Http Auth Request ( ĊĠĠĠĠĠĠĠ Ġview : ĠWebView ?, ĊĠĠĠĠĠĠĠ Ġhandler : ĠHttp Auth Handler ?, ĊĠĠĠĠĠĠĠ Ġhost : ĠString ?, ĊĠĠĠĠĠĠĠ Ġrealm : ĠString ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! userName . isNull OrEmpty () Ġ|| Ġ! user Pass . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler ?. proceed ( userName , Ġuser Pass ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Received Http Auth Request ( view , Ġhandler , Ġhost , Ġrealm ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Http Auth Dialog ( view , Ġhandler , Ġhost , Ġrealm ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Http Auth Dialog ( ĊĠĠĠĠĠĠĠ Ġview : ĠWebView ?, ĊĠĠĠĠĠĠĠ Ġhandler : ĠHttp Auth Handler ?, ĊĠĠĠĠĠĠĠ Ġhost : ĠString ?, ĊĠĠĠĠĠĠĠ Ġrealm : ĠString ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġcontext Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġdialog Container Ġ= ĠLayoutInflater . from ( context ). inflate ( R . layout . view _ http _ auth , Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġhttp Auth Dialog Ġ= ĠAlertDialog . Builder ( context ) ĊĠĠĠĠĠĠĠ Ġhttp Auth Dialog ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle (" Basic ĠAuthentication ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setView ( dialog Container ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Cancel able ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button (" OK ") Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠuserName Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Container . findViewById < EditText >( R . id . et UserName ). text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Pass Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Container . findViewById < EditText >( R . id . et User Pass ). text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler ?. proceed ( userName , Ġuser Pass ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Received Http Auth Request ( view , Ġhandler , Ġhost , Ġrealm ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button (" Cancel ") Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler ?. cancel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Received Http Auth Request ( view , Ġhandler , Ġhost , Ġrealm ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} Ċ }