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);
