android网络编程 五(WebView)

来源:互联网 发布:银行软件 编辑:程序博客网 时间:2024/05/23 02:08

WebView组件是Android用于显示网页的,它内置了WebKit引擎,WebKit是一个开源的浏览器引擎,Chrome浏览器也是基于它,所以我们可以把WebView当做一个轻量级的浏览器使用。
使用WebView需要在AndroidManifest.xml中添加网络权限:

<uses-permission android:name="android.permission.INTERNET"/>

使用WebView加载网页:
1.加载外部服务器网页

//只有这句会跳转出当前的activity        webView.loadUrl("http://www.baidu.com");        //网页显示到activity中        webView.setWebViewClient(new WebViewClient(){            @Override            public boolean shouldOverrideUrlLoading(WebView view, String url) {                // TODO Auto-generated method stub                view.loadUrl(url);                return super.shouldOverrideUrlLoading(view, url);            }        });

2.加载本地网页

    //这里的格式是固定的,文件夹assets目录下    webView.loadUrl("file:///android_asset/XXX.html");

3.加载html数据

    String data = "<html><body>this is my webview.</body></html>";    webView.loadData(data, "text/html", "utf-8");

POST方法传递参数:

String postData = "name=zhangsan&age=25";        webView.postUrl(url, EncodingUtils.getBytes(postData, "utf-8"));

WebView参数设置:

        WebSettings webSettings = webView.getSettings();//获取设置对象        webSettings.setSavePassword(true);//保存密码        webSettings.setSaveFormData(true);//保存表单数据        webSettings.setJavaScriptEnabled(true);//WebView默认是不支持javascript的        webSettings.setSupportZoom(true);//缩放        webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);//在内容内部显示        webView.goBack();//返回        webView.goForward();//前进        webView.stopLoading();//停止加载        webView.requestFocus();//如果不设置的话,会出现不能弹出软键盘等问题

实现与JS交互:

public class WebViewActivity extends Activity {    String url = "";    private WebView webView = null;    @Override    protected void onCreate(Bundle savedInstanceState) {        // TODO Auto-generated method stub        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_webview);        webView = (WebView) findViewById(R.id.myWebView);        WebSettings webSettings = webView.getSettings();//获取设置对象        webSettings.setJavaScriptEnabled(true);//WebView默认是不支持javascript的        webView.addJavascriptInterface(new MyObject(), "demo");        webView.loadUrl("file:///android_asset/test.html");    }    Handler handler = new Handler();    public class MyObject{        @JavascriptInterface        public void clickOnAndroid(){            handler.post(new Runnable() {                @Override                public void run() {                    // TODO Auto-generated method stub                    webView.loadUrl("javascript:myFun()");                }            });        }    }}

上面的test.html

<html>    <head>        <title>demo</title>        <script type="text/javascript">            //这里面的代码表示如果浏览器支持就执行            function myFun() {                document.getElementById("droid").src = "b.jpg";            }        </script>    </head>    <body>        <a onclick="window.demo.clickOnAndroid()">            <img id="droid" src="a.jpg" width="400" height="500"/>        </a>    </body></html>
0 0