android WebView 详细代码
简单粗暴有效的代码
案例代码:
packagecom.itcast.webviewdemo;
importandroid.app.Activity;
importandroid.graphics.Bitmap;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.webkit.JavascriptInterface;
importandroid.webkit.WebChromeClient;
importandroid.webkit.WebSettings;
importandroid.webkit.WebView;
importandroid.webkit.WebViewClient;
importandroid.widget.Toast;
publicclassMainActivityextendsActivity{
privateWebViewmWebview;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//1.控件的加载-------------------------------
mWebview=(WebView)findViewById(R.id.webview);
//2.设置对象的获取-------------------------------
WebSettingssettings=mWebview.getSettings();//获取设置对象
//3.设置参数的添加-------------------------------
settings.setJavaScriptEnabled(true);//支持js效果
settings.setBuiltInZoomControls(true);//显示放大缩小按钮(不支持wap网页)
settings.setUseWideViewPort(true);//支持双击缩放(不支持wap网页)
//webview加缓存
//settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);//
//只要有缓存,就优先加载缓存;没缓存就请求网络
//settings.setCacheMode(WebSettings.LOAD_CACHE_ONLY);//只加载缓存
//settings.setCacheMode(WebSettings.LOAD_NO_CACHE);//不加载缓存
//根据cache-control决定是否从网络上取数据
//什么是cache-control?
//cache-control是在请求网页时服务器的响应头,此响应头用于决定网页的缓存策略.
//常见的取值有public(所有内容都将被缓存),
//private(内容只缓存到私有缓存中),no-cache(所有内容都不会被缓存),max-age=xxx(缓存的内容将在xxx
//秒后失效)等等
settings.setCacheMode(WebSettings.LOAD_DEFAULT);//默认模式
//mWebview.clearCache(true);//清除缓存
mWebview.setWebViewClient(newWebViewClient(){
@Override
publicvoidonPageStarted(WebViewview,Stringurl,Bitmapfavicon){
super.onPageStarted(view,url,favicon);
System.out.println("开始加载网页....");
}
@Override
publicvoidonPageFinished(WebViewview,Stringurl){
super.onPageFinished(view,url);
System.out.println("网页加载结束....");
}
//webview的所有链接跳转都会走此回调方法
@Override
publicbooleanshouldOverrideUrlLoading(WebViewview,Stringurl){
System.out.println("跳转链接:"+url);
//如果希望一直在当前webview加载网页,而不跳转浏览器的话
view.loadUrl(url);
//<ahref="tel:110">联系我们</a>
returntrue;
//returnsuper.shouldOverrideUrlLoading(view,
//url);//此方法是由系统决定使用当前webview加载还是跳浏览器
}
});
mWebview.setWebChromeClient(newWebChromeClient(){
//网页加载进度发生变化
@Override
publicvoidonProgressChanged(WebViewview,intnewProgress){
super.onProgressChanged(view,newProgress);
System.out.println("progress-->"+newProgress);
}
//获取网页标题
@Override
publicvoidonReceivedTitle(WebViewview,Stringtitle){
super.onReceivedTitle(view,title);
System.out.println("网页标题:"+title);
}
});
//<aonClick="window.demo.onCallback()">点我!</a>
//网页调用格式:window.NAME.回调方法名称
mWebview.addJavascriptInterface(newOnJsCallback(){
@JavascriptInterface//注意:此处一定要加该注解,否则在4.1+系统上运行失败
@Override
publicvoidonCallback(){
Toast.makeText(getApplicationContext(),"Js调用Android啦",
Toast.LENGTH_SHORT).show();
}
},"demo");
//使用webview加载网页
mWebview.loadUrl("http://www.baidu.com");//wap网页
}
@Override
publicvoidonBackPressed(){
if(mWebview.canGoBack()){//判断是否可以跳到上一个页面
mWebview.goBack();//跳到上一个页面
}else{
finish();
}
//mWebview.goForward();//跳到下一个页面
//mWebview.canGoForward();//是否可以跳到下一个页面
}
//Android调用Js
publicvoidandroidCallJs(Viewview){
//直接使用webview加载js就可以了
mWebview.loadUrl("javascript:wave()");
}
//js调用android的回调接口
publicinterfaceOnJsCallback{
publicvoidonCallback();
}
}
更多相关文章
- android Style应用
- Android(安卓)Webview 获取网页form 提交的数据
- Android(安卓)Retrofit 笔记之一使用拦截器设置缓存
- android中简单的listview代码
- Android(安卓)Error:Could not open cp_proj remapped class cach
- Android(安卓)设置全屏,画图,加载位图
- Android数据缓存
- android截图代码
- android startActivityForResult