通过Intent实现网络访问
Android中可以通过Intent实现网络访问,使用改方法,手机将使用手机内默认浏览器进行网页访问,在xml中声明WebView控件,具体代码如下:
Uri uri = Uri.parse(url);
Intent intentWeb = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intentWeb);
Uri uri = Uri.parse(url);
Intent intentWeb = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intentWeb);
加载本地网页
可以把自定义网页文件放到工程的assets中,通过WebView显示本地网页,具体代码如下:
webView.loadUrl("file:///android_asset/index.html");
注:index.html为assets文件夹中网页文件名
WebView访问网页
加载网页与设置
通过loadUrl加载网址:
private String url = "http://www.hchstudio.cn";
webView.loadUrl("file:///android_asset/index.html");
使WebView获得焦点:
webView.requestFocus();
WebSettings使用
Android 提供管理WebView的一些setting的类WebSettings,在WebView对象被创建时WebSettings对象也会被同时创建,并附有默认的settings值. WebSettings对象可以通过WebView.getSettings()获得。WebSettings的生命周期同WebView生命周期相同,如果WebView被destroy 则WebSettings应该被释放,否则如果使用WebSettings继续再操作的话, 会抛出异常IllegalStateException。
WebSettings webSettings = webView.getSettings();
//启用javascript
webSettings.setJavaScriptEnabled(true);
//webView有限使用缓存加载
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
setWebViewClient的使用
WebViewClient帮助WebView去处理一些页面控制和请求通知
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
view.loadUrl(url);
return true;
// 返回为true时,控制网页在webview中打开,为false时,调用系统浏览器打开
}
// 网页下载开始
@Override
public void onPageStarted(WebView view, String url,
Bitmap favicon) {
// TODO Auto-generated method stub
super.onPageStarted(view, url, favicon);
}
// 网页下载结束
@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
}
});
setWebChromeClient
WebChromeClient在页面加载中设置处理问题,例如进度条
webView.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
// TODO Auto-generated method stub
// newProgress为1-100之间的整数
if(newProgress==100){
// 网页加载完毕
if(pd!=null&& pd.isShowing()){
pd.dismiss();
pd=null;
}
}else{
// 网页正在加载
showpd(newProgress);
}
super.onProgressChanged(view, newProgress);
}
});
private void showpd(int newProgress) {
// TODO Auto-generated method stub
if(pd ==null){
pd = new ProgressDialog(this);
pd.setTitle("网页加载");
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pd.setProgress(newProgress);
pd.show();
}else{
pd.setProgress(newProgress);
}
}
改变返回逻辑
设置WebView返回时为上一个浏览的网页
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()){
Toast.makeText(this, webView.getUrl(), Toast.LENGTH_SHORT).show();
webView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}