Android webview加载Html页面,传参到Html并获取返回值

1.Android端代码

public class MainActivity extends Activity {

private static final String LOGTAG = "MainActivity";
@SuppressLint("JavascriptInterface")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final WebView myWebView = (WebView) findViewById(R.id.myWebView);

    WebSettings settings = myWebView.getSettings();
    settings.setJavaScriptEnabled(true);//设置JS可用
    myWebView.addJavascriptInterface(new JsInteration(), "control");//传递对象进行交互
    myWebView.setWebChromeClient(new WebChromeClient() {});
    myWebView.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {//当页面加载完成
            super.onPageFinished(view, url);            


           if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.KITKAT){//当Android SDK>=4.4时
               callEvaluateJavascript(myWebView);
           }else {
            callMethod(myWebView);
           }
      }

    });
    myWebView.loadUrl("file:///android_asset/js_java_interaction.html");
}

private void callMethod(WebView webView) {
    String call = "javascript:sayHello()";

    call = "javascript:alertMessage(\"content\")";

   // call = "javascript:toastMessage(\"Hello World\")";

    //call = "javascript:sumToJava(1,2)";

    //call = "javascript:mult1(3,3)";

    webView.loadUrl(call);

}

public class JsInteration {

    @JavascriptInterface
    public void toastMessage(String message) {

        Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG).show();
    }

    @JavascriptInterface
    public void onSumResult(int result) {

        System.out.println(LOGTAG+"_onSumResult result=" + result);
    }

    @JavascriptInterface
    public void onMultResult(int result) {

        System.out.println(LOGTAG+"_onMultResult result=" + result);
    }
}

private void callEvaluateJavascript(WebView webView) {

      webView.evaluateJavascript("mult2(3,3)", new ValueCallback<String>() {

      @Override
      public void onReceiveValue(String value) {         

          System.out.println(LOGTAG+"_onReceiveValue value=" + value);
          Toast.makeText(MainActivity.this, "onReceiveValue value=" + value, Toast.LENGTH_LONG).show();
      }});
    }

}

2.Html页面
<html> <script type="text/javascript">   
       function sayHello() {   alert("Hello")    }
       function alertMessage(message) {   alert(message)    }
       function toastMessage(message) 
       {  window.control.toastMessage(message)    }
       function sumToJava(number1, number2){
         window.control.onSumResult(number1 + number2)    }  
       function mult1(x,y) {
        window.control.onMultResult(x*y)
       }     
       function mult2(x,y) {
        return  x*y;
       }     
      function sub(x,y) {
       return  x-y;
       }
 <body> <center> <p>Android与Javascript之间的交互.</p> </center> </body>
  </html> 

3.运行结果
这里写图片描述
4.Demo下载地址
http://download.csdn.net/detail/sanyang730/9535274

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值