Android--WebView(展示Web数据)

一、通过Intent调用系统浏览器

在Layout XML文件中添加控件WebView;

Uri uri=Uri.parse(url); //url为链接地址,如http://www.ifeng.com ,不能缺少http://

Intent intent =new Intent(Intent.ACTION_VIEW,uri);

startActivity(intent);

二、在WebView中加载页面,通过WebView对象webView使用loadUrl()。

1.web资源:webView.loadUrl("http://www.baidu.com"); 通常由默认的系统浏览器或第三方浏览器打开并加载目标URL。但你可以在WebView中覆盖这一行为,那么链接就会在WebView中打开。

webView.setWebViewClient(new WebViewClient(){

//WebViewClient帮助WebView去处理一些页面控制和请求通知,该类还有其他方法

@Override

public boolean shouldOverrideUrlLoading(WebView view,String url)

{

//返回值为true时,控制网页在WebView中打开;为false时,调用系统或第三方浏览器打开。

//return super.shouldOverrideUrlLoading(view,url);

view.loadUrl(url);

return true;

}

});

2.本地文件:webView.loadUrl("file:///android_asset/XX.html");  本地文件存放在assets文件夹中

3.使页面获得焦点:webView.requestFocus(); 若web页面有文本输入框,需获得焦点,否则点击时可能无响应。

三、获取网络访问权限

1.若调用系统的软件访问web,是不需要获取网络访问权限的。

2.但是如果我们的App要直接访问网络资源,需配置manifest文件,获取INTERNET权限。

<manifest ...>

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

...

</manifest>

四、在WebView中启用Javascript:在WebView加载的web页面中使用Javascript,需在WebView中启用Javascript。

1.通过WebView类的getSettings()方法获取WebSettings的值

WebSettings webSettings=webView.getSettings();

2.通过WebSettings类的setJavaScriptEnabled()来启用Javascript

webSettings.setJavaScriptEnabled(true);

实验至此:浏览网页时,按返回,不是返回上一级网页,而是直接退出了app应用,用户体验差。

五、后退与前进

当WebView覆盖了URL加载后,会自动生成历史访问记录,可以通过goBack()或goForward()向前或向后访问已访问过的站点。

@Override 改写手机物理按键--返回的逻辑
public boolean onKeyDown(int keyCode,keyEvent event){
if ( keyCode==KeyEvent.KEYCODE_BACK){
	if( webView.canGoBack() ){ 
	webView.goBack(); 
	return true;
	}
else
	System.exit(0); //退出程序,有的网页需按返回键多次才会退出app,是因为这些网站用了重定向的技术
}

return super.onKeyDown(keyCode,event);
}

六、判断页面加载过程:由于有些网页可能加载缓慢,所以需要去判断页面的加载过程,制作进度条给予用户良好的体验效果。

webView.setWebChromeClient(new WebChromeClient(){
  @Override
  public void onProgressChanged(WebView view,int newProgress){
    if(newProgress==100){//加载完成,关闭ProgressDialog
      myClosseDialog();
    }else{
     //加载中,打开ProgressDialog
      myOpenDialog(newProgress);
    }
  }
});
七、WebView缓存的运用

1.优先使用缓存:webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);

2.不使用缓存(默认):webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值