如何从Android代码在Web视图中运行React JS函数?

时间:2019-01-21 22:56:41

标签: android html reactjs typescript android-webview

因此,我有一个React-Typescript Web应用程序,该应用程序托管在Android应用程序的WebView中。

我只是想将数据从Android客户端传递到Webview。 但是,这是一个使用webpack构建的React应用程序这一事实似乎使事情变得复杂。

按照从以下堆栈响应中找到的说明进行操作:Passing data from java class to Web View html

我试图在Index.tsx中添加一个函数,并像下面这样从andoird调用它:

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 + "')");
    }           
});

但是找不到该功能。我的下一个想法是将其添加到Index.Html,但是随后我需要以某种方式存储数据,以便可以从我的React代码中引用它。

我尝试像这样使用本地存储:

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

我尝试了此操作,并且没有窗口前缀,但这两次都给我一个错误,提示我试图在空引用上调用setItem。

有人知道我如何将数据从Android发送到我的React应用吗?

1 个答案:

答案 0 :(得分:1)

您需要在设置中启用localStorage(类似于setJavaScriptEnabled),例如

webview.getSettings().setDomStorageEnabled(true);