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 = "<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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值