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

Posted

技术标签:

【中文标题】如何从我的 Android 代码在 web 视图中运行 React JS 函数?【英文标题】:How can I run React JS functions in a webview from my Android code? 【发布时间】:2019-06-15 08:53:18 【问题描述】:

所以我有一个 React-Typescript webapp,我在我的 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 应用程序吗?

【问题讨论】:

以下答案对我来说似乎不是解决方案。你解决了这个问题吗? @Brian C 【参考方案1】:

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

webview.getSettings().setDomStorageEnabled(true);

【讨论】:

以上是关于如何从我的 Android 代码在 web 视图中运行 React JS 函数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 上从我的应用程序启动 URL?

如何在列表视图中获取所选项目的值 - Android

如何从我的视图的 javascript 访问我的代码隐藏文件中的 JsonResult 变量?剃刀页面。 C#

如何在 Ionic Android 中将 Javascript 注入 Web 视图?

Android如何从同一个数组中仅显示列表视图中的某些项目?

如何从 Android 移动应用程序调用本地 Web 服务