package Ġcom . r ak uten . tech . mobile . mini app . display Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . webkit . WebView Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroidx . annotation . Visible ForTesting Ċ import Ġandroidx . webkit . WebView Asset Loader Ċ import Ġcom . r ak uten . tech . mobile . mini app . js . Mini App Message Bridge Ċ import Ġjava . io . File Ċ Ċ private Ġconst Ġval ĠSUB _ DOMAIN _ PATH Ġ= Ġ" mini app " Ċ private Ġconst Ġval ĠMIN I _ APP _ INTERFACE Ġ= Ġ" Mini App Android " Ċ Ċ @ Suppress Lint (" Set JavaScript Enabled ") Ċ internal Ġclass ĠMini App WebView ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġval ĠbasePath : ĠString , ĊĠĠĠ Ġval ĠappId : ĠString , ĊĠĠĠ Ġmini App Message Bridge : ĠMini App Message Bridge Ċ ) Ġ: ĠWebView ( context ), ĠWebView Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġmini App Domain Ġ= Ġ" m scheme .$ appId " ĊĠĠĠ Ġprivate Ġval Ġcustom Scheme Ġ= Ġ"$ mini App Domain ://" ĊĠĠĠ Ġprivate Ġval Ġcustom Domain Ġ= Ġ" https :// $ mini App Domain /" ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġlayout Params Ġ= ĠFrame Layout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . MATCH _ PARENT , ĠViewGroup . LayoutParams . MATCH _ PARENT ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġsettings . java Script Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġadd Javascript Interface ( mini App Message Bridge , ĠMIN I _ APP _ INTERFACE ) ĊĠĠĠĠĠĠĠ Ġmini App Message Bridge . set WebView Listener ( this ) ĊĊĠĠĠĠĠĠĠ Ġsettings . allow Universal Access FromFile URLs Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġsettings . dom Storage Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġsettings . database Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠwebView Client Ġ= ĠMini App WebView Client ( get WebView Asset Loader (), Ġcustom Domain , Ġcustom Scheme ) ĊĠĠĠĠĠĠĠ Ġweb Chrome Client Ġ= ĠMini App Web Chrome Client ( context ) ĊĊĠĠĠĠĠĠĠ Ġload Url ( get Load Url ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdestroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġstop Loading () ĊĠĠĠĠĠĠĠ ĠwebView Client Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġdestroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrun Success Callback ( callback Id : ĠString , Ġvalue : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpost Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevaluate Javascript ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Mini App Bridge . exec Success Callback (\" $ callback Id \", Ġ\"$ value \") " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrun Error Callback ( callback Id : ĠString , ĠerrorMessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpost Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevaluate Javascript ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Mini App Bridge . exec Error Callback (\" $ callback Id \", Ġ\"$ errorMessage \") " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget WebView Asset Loader () Ġ= ĠWebView Asset Loader . Builder () ĊĠĠĠĠĠĠĠ Ġ. set Domain ( mini App Domain ) ĊĠĠĠĠĠĠĠ Ġ. add Path Handler ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ $ SUB _ DOMAIN _ PATH /", ĠWebView Asset Loader . Internal Storage Path Handler ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( basePath ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. add Path Handler ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"/", ĠWebView Asset Loader . Internal Storage Path Handler ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( basePath ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġ@ Visible ForTesting ĊĠĠĠ Ġinternal Ġfun Ġget Load Url () Ġ= Ġ"$ custom Domain $ SUB _ DOMAIN _ PATH / index . html " Ċ } Ċ Ċ internal Ġinterface ĠWebView Listener Ġ{ ĊĠĠĠ Ġfun Ġrun Success Callback ( callback Id : ĠString , Ġvalue : ĠString ) ĊĠĠĠ Ġfun Ġrun Error Callback ( callback Id : ĠString , ĠerrorMessage : ĠString ) Ċ } Ċ