0

我想创建一个能够计算像 3+(2-1)*2 或 (28.4/2-1.5)+(4-2) 这样的字符串的计算器。我在网上搜索,发现可以使用启用了 JavaScript 的 WebView,它可以评估()字符串。

如何在 WebView 中使用 JavaScript?

例如,我如何将 input.getText().toString() 传递给 JavaScript 并取回一个值?

如何在我的 Java 代码中访问 JavaScript 的评估()?

我在这里找到了一个教程。我必须将 HTML 文件加载到我的 WebView 中,不是吗?

4

1 回答 1

-1

你走对了。对于在 webview 中使用 javascript,在将 url 加载到 webview 之后,(您可以在 onPageFinish 函数中捕捉到页面加载)在 onPageFinish 函数中,您可以像这样调用 js:

但首先您必须使用以下代码块授予 webview 权限:

   settings.setJavaScriptEnabled(true);
   settings.setJavaScriptCanOpenWindowsAutomatically(true);

   webview.loadUrl("javascript:setPageHeight("+contentHeight+");"); // you can pass param with call js function at loaded page.
   webview.loadUrl("javascript:alert('test');"); // or you can call like this

要使用 js 从 webview 获取结果参数,您必须有一个像这样的子类:

   class JavaScriptInterface {
      public void showToast(String msg) {
           Toast.makeText(mContext, "Received Msg :" + msg,Toast.LENGTH_SHORT).show();
      }
   }

然后你在定义 webview 行把这个给你的 webview

   webview.addJavascriptInterface(new JavaScriptInterface(), "MyAndroid");

最后,您在 js 中的 html 中调用 java 函数,如下所示:

<html>
  <head>
    <script type="text/javascript">
      function sayHello(msg){
        //calls Android's JavaScriptInterface Function
        MyAndroid.showToast(msg);
      }
    </script>
 </head>
 <body >
   <div onclick="sayHello('hello')"> Click Me !!  </div>
 </body>
</html>
于 2012-10-17T14:38:09.950 回答