【无标题】

3.3 WebViewClient

3.3.1shouldOverrideUrlLoading(重定向时回调)
3.3.2 onPageStarted(开始加载网络)
3.3.3 onPageFinished(网页加载完成回调)
3.3.4 onLoadResoure(加载Url资源回调)
3.3.5 shoudIdInterceptRequest
3.3.6 onReceivedError(访问地址错误回调)
3.3.7 onFormResubm(post请求)
3.3.8 doUpdateVisitedHistory(更新数据库)
3.3.9 onReceivedSsslError(加载SSL错误回调)
3.3.10 onReceivedHttpAuthRequest(auth请求回调)
3.3.11 shouldOverrideKeyEvent(按键处理回调)
3.3.12onScaleChanged(WebView比例改变)
3.3.13 onReceivedLoginRequest(账户自动登录)

/**
	 * onReceivedError
	 * <p>
	 * 当浏览器访问制定的网址发生错误时会通知我们应用程序 参数说明:
	 * </p>
	 * 
	 * @param view
	 *            接收WebViewClient的那个实例,前面看到webView.setWebViewClient(new
	 *            MyAndroidWebViewClient()),即是这个webview。
	 * @param errorCode
	 *            错误号可以在WebViewClient.ERROR_* 里面找到对应的错误名称。
	 * @param description
	 *            描述错误的信息
	 * @param failingUrl
	 *            当前访问失败的url,注意并不一定是我们主url
	 */
	@Override
	public void onReceivedError(WebView view, int errorCode,
			String description, String failingUrl) {
		// TODO Auto-generated method stub
		super.onReceivedError(view, errorCode, description, failingUrl);
		view.loadUrl("file:///android_asset/error.html");
		Log.i(TAG, "onReceivedError");
	}

这样就在main文件夹下创建了一个和res文件夹同级的assets文件夹了:

说明:这种方式可以加载assets目录下的网页,并且与网页有关的css,js,图片等文件也会加载。
1、新建assets资源文件

右键单击main目录,选择New>Folder>Assets Folder. 勾选Change Folder Location可改变其默认路径
在Assets目录下新建html、css等文件夹,把相应html和资源文件copy进去

2、Webview加载资源文件

String url = "file:///android_asset/index.html";
webview.loadUrl(url);

3、HTML内引入资源文件

<link rel="stylesheet" type="text/css" href="file:///android_asset/css/jquery.mobile-1.4.2.min.css">  
<script src="file:///android_asset/js/jquery-1.7.1.min.js"></script> 

2.访问assets目录下的资源文件:

// 读取Assets文件夹下对应文件的输入流
InputStream is = getAssets().open("asset_test.txt");
// 读取Assets文件夹下mysw文件夹内对应文件的输入流
InputStream is2 = getAssets().open("mysw/asset_test.txt");

4.将assets下的文件复制到SD卡

/** 
 *  从assets目录中复制整个文件夹内容 
 *  @param  context  Context 使用CopyFiles类的Activity
 *  @param  oldPath  String  原文件路径  如:/aa 
 *  @param  newPath  String  复制后路径  如:xx:/bb/cc 
 */ 
public void copyFilesFassets(Context context,String oldPath,String newPath) {                    
         try {
        String fileNames[] = context.getAssets().list(oldPath);//获取assets目录下的所有文件及目录名
        if (fileNames.length > 0) {//如果是目录
            File file = new File(newPath);
            file.mkdirs();//如果文件夹不存在,则递归
            for (String fileName : fileNames) {
               copyFilesFassets(context,oldPath + "/" + fileName,newPath+"/"+fileName);
            }
        } else {//如果是文件
            InputStream is = context.getAssets().open(oldPath);
            FileOutputStream fos = new FileOutputStream(new File(newPath));
            byte[] buffer = new byte[1024];
            int byteCount=0;               
            while((byteCount=is.read(buffer))!=-1) {//循环从输入流读取 buffer字节        
                fos.write(buffer, 0, byteCount);//将读取的输入流写入到输出流
            }
            fos.flush();//刷新缓冲区
            is.close();
            fos.close();
        }
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        //如果捕捉到错误则通知UI线程
                   MainActivity.handler.sendEmptyMessage(COPY_FALSE);
    }                           
}
 
该方法调用时的代码:music为assets目录下面的文件夹,里面包括具体的文件
copyFilesFassets(this, "music", "sdcard/clock");
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值