WebView用法与JS交互(1) 基础

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

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

 

JavaScript调用Android

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代码访问。

4.网页中调用

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

 

android调用Js

1.注册函数

    myButton.setOnClickListener(new View.OnClickListener() {

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

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

            }
        });

2.html网页中写函数

   function myFunction()
    {
        alert("Hello World!");
    }

3.设置 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);
            }

        });

 

 

posted on 2014-03-26 18:00  wjw334  阅读(263)  评论(0编辑  收藏  举报

导航