我如何在Android WebView中使用JavaScript evaluate()?

时间:2012-10-10 10:44:51

标签: javascript android webview evaluate

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

如何在WebView中使用JavaScript?

我如何将例如input.getText()。toString()传递给JavaScript并获取值?

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

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

1 个答案:

答案 0 :(得分:-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>