android网络编程 五(WebView)

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 = "this is my webview.";
    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>demotitle>
        <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>

你可能感兴趣的:(android基础)