WebView用法与JS交互

参考 http://blog.csdn.net/chenfeng0104/article/details/7023448

http://www.cnblogs.com/mengdd/archive/2013/03/02/2940185.html

 

Android 调用JavaScript

1.设置js Enable

WebView myWebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);

 

 

2.注册函数

// 用JavaScript调用Android函数:
// 先建立桥梁类,将要调用的Android代码写入桥梁类的public函数
// 绑定桥梁类和WebView中运行的JavaScript代码
// 将一个对象起一个别名传入,在JS代码中用这个别名代替这个对象,可以调用这个对象的一些方法
myWebView.addJavascriptInterface(new WebAppInterface(this),"myInterfaceName");

 

3.设置标签

Android 4.1,API 17,也就是JELLY_BEAN 开始,只有被JavascriptInterface 注解标识的公有方法可以被JS代码访问。

5.设置 chrome handler

// 如果不设置这个,JS代码中的按钮会显示,但是按下去却不弹出对话框
        // Sets the chrome handler. This is an implementation of WebChromeClient
        // for use in handling JavaScript dialogs, favicons, titles, and the
        // progress. This will replace the current handler.
        myWebView.setWebChromeClient(new WebChromeClient()
        {

            @Override
            public boolean onJsAlert(WebView view, String url, String message,
                    JsResult result)
            {
                // TODO Auto-generated method stub
                return super.onJsAlert(view, url, message, result);
            }

        });

6.网页中调用

    //调用绑定的Java对象的方法,即调用Android代码显示对话框
    function showAndroidToast(toast)
    {
        console.log("showAndroidToast method");
        myInterfaceName.showToast(toast);//注意此处的myInterfaceName要和外部传入的名字一致,大小写正确
    }

 

Js调用android

1.注册函数

    myButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // 用Android代码调用JavaScript函数:
                myWebView.loadUrl("javascript:myFunction()");

                // 这里实现的效果和在网页中点击第一个按钮的效果一致

            }
        });

2.html网页中写函数

1
2
3
4
function myFunction()
 {
     alert("Hello World!");
 }

  

WebView用法与JS交互,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。