html - Hur kan jag köra React JS-funktioner i en webview från min Android-kod?


Så jag har en React-Typescript-webbapp som jag hostar i en WebView i min Android-app.

Jag försöker helt enkelt att skicka data från Android-klienten till Webview. Men det faktum att det är en React-app som byggs med webpack verkar komplicera saker.

Följa instruktionerna som finns i detta stack-svar: Skicka data från Java-klass till Web View HTML

Jag försökte lägga till en funktion i Index.tsx och kalla på den från Android så här:

webview.getSettings().setJavaScriptEnabled(true);
webview.loadUrl("file:///android_asset/test.html");
webview.setWebViewClient(new WebViewClient(){
    public void onPageFinished(WebView view, String url){   
        webview.loadUrl("javascript:init('" + theArgumentYouWantToPass + "')");
    }           
});

Men den kunde inte hitta funktionen. Min nästa tanke var att helt enkelt lägga till den i Index.Html, men då skulle jag behöva lagra datan på något sätt så att jag kunde referera till den från min React-kod.

Jag försökte använda lokal lagring på detta sätt:

    <script type="text/javascript">
        function init(val)
        {
            window.localStorage.setItem("key", val);
        }
    </script>

Jag försökte detta med och utan fönsterprefixet men båda gångerna får jag ett fel som säger att jag försöker kalla setItem på en null-referens.

Vet någon hur jag kan skicka data från Android till min React-app?

Svar #1

Du behöver aktivera localStorage i inställningarna (liknande setJavaScriptEnabled), t.ex.

webview.getSettings().setDomStorageEnabled(true);