Android中webView实战详解

本文详细介绍了Android中的WebView组件的使用,包括加载URL、设置属性、WebViewClient和WebChromeClient的事件处理,以及Cookie管理和缓存模式。此外,还讨论了如何实现Native与JavaScript的交互,提供了一个基础的实战指南。
摘要由CSDN通过智能技术生成

感觉这个排版看起来更舒服 Android WebView简单使用以及实现native与h5交互

一、WebView

谷歌提供的系统组件,用来加载和展现html网页,其采用webkit内核驱动,来实现网页浏览功能。

拥有load() URL和本地html文件。

 // 云端 webView.loadUrl("https://www.baidu.com");
 // 本地 webView.loadUrl("file:///android_asset/demo.html");

注意:
1. loadUrl()必须在主线程中执行。
2. 加载在线网页地址是会用到联网permission权限的,所以需要在AndroidManifest.xml中写入下面代码申请权限:
<uses-permission android:name="android.permission.INTERNET" />
3. 打开本地html文件时,是不需要设置WebViewClient,对应的asstes目录的url为:file:///android_asset/xxxxx
4. WebView基本设置
如果我们需要设置WebView的属性,是通过WebView.getSettings()获取设置WebView的WebSettings对象,然后调用WebSettings中的方法来实现的。

// 是否支持缩放,配合方法setBuiltInZoomControls使用,默认true  
setSupportZoom(boolean support) 
//是否需要用户手势来播放Media,默认true 
setMediaPlaybackRequiresUserGesture(boolean require)  
 是否显示窗口悬浮的缩放控制,默认true 
setDisplayZoomControls(boolean enabled)  
是否允许访问WebView内部文件,默认true 
setAllowFileAccess(boolean allow)  
是否保存表单数据,默认false 
setSaveFormData(boolean save)  
// 设置页面文字缩放百分比,默认100% 
setTextZoom(int textZoom)  
。。。。。。

二、WebViewClient

WebViewClient主要辅助WebView执行处理各种响应请求事件的,比如:
1. onLoadResource(WebView view, String url)
在加载页面资源时会调用,每一个资源(比如图片)的加载都会调用一次。

public void onLoadResource(WebView view, String url) {
    // TODO Auto-generated method stub
   if (DEBUG) {
     Log.d(TAG, " onLoadResource ");
    }
   super.onLoadResource(view, url);
}

- onPageStarted(WebView view, String url, Bitmap favicon)
在页面加载开始时调用。

public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
   if (DEBUG) {
Log.d(TAG, " onPageStarted ");
  }
if (url.endsWith(".apk")) {
download(url);//下载处理
  }
super.onPageStarted(view, url, favicon);
}

- onPageFinished(WebView view, String url)
在页面加载结束时调用。
- onReceivedError(WebView view, int errorCode,String description, String failingUrl)
加载错误的时候会回调,在其中可做错误处理,比如再请求加载一次,或者提示404的错误页面
这里有四个参数:
+ WebView view:当前的WebView实例
2. int errorCode:错误码
3. String description:错误描述
4. String failingUrl:当前出错的URL
如加载返回错误时,重新加载错误页面:

mWebView.setWebViewClient(new WebViewClient(){  
    @Override  
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {  
        super.onReceivedError(view, errorCode, description, failingUrl);  
        mWebView.loadUrl("file:///android_asset/error.html");  
    }  
});  
  • shouldOverrideUrlLoading(WebView view, String url)
    拦截 url 跳转,在里边添加点击链接跳转或者操作

    public boolean shouldOverrideUrlLoading(WebView view, String url) {
      //拦截某个URL,将其转换成其它URL可以在这里做
       view.loadUrl(url);
       return true;
    }

    在点击请求的是链接是才会调用,重写此方法返回tr
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值