在 android Webview 中添加 ReactJS

IT技术 javascript android reactjs
2021-05-22 01:48:45

我正在开发一个带有WebView. 我使用了一个 HTML 文件,WebView通过启用 Javascript 和添加一个 Javascript 界面,通过 javascript加载并赋予 UI 元素的功能。

WebView myWeb=(WebView)findViewById(R.id.webView1);
    myWeb.getSettings().setJavaScriptEnabled(true);
    myWeb.getSettings().setLoadWithOverviewMode(true);
    myWeb.loadUrl("file:///android_asset/webview.html");

    myWeb.addJavascriptInterface(new Object()
    {
        @JavascriptInterface          
        public void recognizeIt(String message)
        {

            Toast.makeText(WebViewActivity.this, message,
                    Toast.LENGTH_LONG).show();
            Intent Intent = new Intent(WebViewActivity.this, StartActivity.class);
            startActivity(Intent);
        }
    }, "Android");    

下面是我的 html 文件。

<html>
    <head>
          <script type="text/javascript">
                function shareIt(toast) {
                   var uname=document.getElementById("message").value;
                   Android.recognizeIt(uname);

                }
        </script>
    </head>
    <body>
        <label id="username"><b>Username</b></label>
        <input type="text" placeholder="Enter Username" name="uname" required id="message">
        <button type="button" onclick="shareIt('message')"> SEND </button>


    </body>
</html>

现在,我想使用 ReactJS 在我的应用程序中创建 UI 屏幕而不是 html 文件。我试图搜索相同的但没有找到任何样本。如果有人能在这里帮助/指导我,我将不胜感激。

2个回答

您编写的任何 JavaScript React 应用程序都可以加载到 Android WebView 中。只需尝试遵循https://reactjs.org/ 上的基本教程即可然后将这些应用程序托管在 Web 服务器上,您就可以将它们加载到您的 Android WebView 中。

为了确保 Android WebView 配置正确,您可以尝试将现有的 React 应用程序加载到您的 WebView 中。例如,尝试调用:

myWeb.loadUrl("https://ahfarmer.github.io/calculator/");

加载正常吗?如果是,那么您的 WebView 已配置为可以显示您自己的 React 应用程序。

对于运行 Web 服务器以从包含 html 文件的目录提供文件的简单方法,请使用以下命令:

browser-sync start --server --https

要安装浏览器同步,请按照https://browsersync.io/ 上的说明进行操作

您可以尝试在React Native 中编写整个应用程序,而不是在 Android WebView 中编写 ReactJS ,“React Native 允许您仅使用 JavaScript 构建移动应用程序。它使用与 React 相同的设计,让您从声明式组件组成丰富的移动 UI .”

你不需要 Android WebView 来使用 React Native。