package Ġcom . push de er . react dash Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . KeyEvent Ċ import Ġandroid . view . View Ċ import Ġandroid . view . WindowManager Ċ import Ġandroid . view . input method . Editor Info Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroid . webkit . Web Chrome Client Ċ import Ġandroid . webkit . WebView Ċ import Ġandroid . webkit . WebView Client Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . ProgressBar Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . view . isVisible Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ Ċ // Ġimport Ġandroid . webkit . Service Worker Controller Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSC AN _ REQUEST Ġ= Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġtarget Url : ĠString Ġ= Ġ" https :// log . ft qq . com /" ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġll Reload : ĠView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġet Target Url : ĠEditText ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpb Load : ĠProgress Bar ĊĊĠĠĠ Ġ// Ġprivate Ġvar Ġm WebView : ĠWebView ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Suppress Lint (" Set JavaScript Enabled ") ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) Ċ Ċ // ĠĠĠĠĠĠĠ Ġval Ġsw Controller Ġ= ĠService Worker Controller . getInstance () Ċ // Ċ // ĠĠĠĠĠĠĠ Ġsw Controller . service Worker Web Settings . allow Content Access Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġget Window (). add Flags ( WindowManager . LayoutParams . FLAG _ KEEP _ SCREEN _ ON ); ĊĊĠĠĠĠĠĠĠ Ġll Reload Ġ= ĠfindViewById ( R . id . ll _ reload ) ĊĠĠĠĠĠĠĠ Ġet Target Url Ġ= ĠfindViewById ( R . id . et _ target _ url ) ĊĠĠĠĠĠĠĠ Ġpb Load Ġ= ĠfindViewById ( R . id . pb _ load ) ĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . im v _ scanner ). setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠScan Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , ĠSC AN _ REQUEST ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġet Target Url . setOn Editor ActionListener ( object : ĠTextView . On Editor ActionListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Editor Action ( v : ĠTextView , Ġaction Id : ĠInt , Ġevent : ĠKeyEvent ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Id Ġ== ĠEditor Info . IME _ ACTION _ DONE Ġ&& Ġv . id Ġ== Ġet Target Url . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreload ( et Target Url . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Method Manager : ĠInput Method Manager Ġ= Ġget System Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Method Manager . hide Soft Input From Window ( et Target Url . window Token , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠwebView . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠwebView Client Ġ= ĠWebView Client () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWebView . set Web Contents Debugging Enabled ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠwebView . get Settings (). set Dom Storage Enabled ( true ); ĊĠĠĠĠĠĠĠĠĠĠĠ ĠwebView . get Settings (). set Database Enabled ( true ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ< ĠBuild . VERSION _ CODES . KIT K AT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠwebView . get Settings (). set Database Path ("/ data / data /" Ġ+ ĠwebView . getContext (). get PackageName () Ġ+ Ġ"/ databases /"); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsettings . java Script Enabled Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġweb Chrome Client Ġ= Ġobject Ġ: Web Chrome Client () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Progress Changed ( view : ĠWebView ?, Ġnew Progress : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Progress Changed ( view , Ġnew Progress ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( progress ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 0 Ġ-> Ġpb Load . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pb Load . visibility Ġ== ĠView . GONE ) Ġpb Load . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpb Load . progress Ġ= Ġnew Progress ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreload ( target Url ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġif Ġyou Ġpress ĠBack Ġbutton Ġthis Ġcode Ġwill Ġwork ĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon KeyDown ( keyCode : ĠInt , Ġevent : ĠKeyEvent ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( keyCode Ġ== ĠKeyEvent . KEYCODE _ VOLUME _ DOWN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġll Reload . visibility Ġ= Ġif Ġ( ll Reload . isVisible ) ĠView . IN VISIBLE Ġelse ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( keyCode Ġ== ĠKeyEvent . KEYCODE _ VOLUME _ UP ) Ġ{ Ċ // Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on KeyDown ( keyCode , Ġevent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK Ġ&& Ġrequest Code Ġ== ĠSC AN _ REQUEST ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġdata ?. getString Extra (" code ") Ġ?: "" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreload ( url ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreload ( url : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUri . parse ( url ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this ," Please Ġenter Ġa Ġvalid ĠURL ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġet Target Url . setText ( url ) ĊĠĠĠĠĠĠĠ ĠwebView . load Url ( url ) ĊĠĠĠ Ġ} Ċ }