简单粗暴有效的代码

案例代码:

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();

}

}

更多相关文章

  1. Android Retrofit 笔记之一使用拦截器设置缓存
  2. Android Webview 获取网页form 提交的数据
  3. Android 设置全屏,画图,加载位图
  4. android 网络异步加载
  5. android listView 滚动加载显示
  6. Android Studio加载老旧项目会遇到的问题
  7. 【Android 开源系列】之缓存框架

随机推荐

  1. 解读Android LOG机制的实现
  2. Android Memory Management, OutOfMemory
  3. Android(安卓)数据存储和文件使用案例分
  4. 进程和线程模型(android)
  5. Android中Intent概述及使用
  6. android进行主题切换不重启整个应用(styl
  7. Android屏幕手势检测的实现代码
  8. Android关机流程解析---从reboot说起
  9. android告别篇-对于源码我的一些看法
  10. Android 系统内存扫盲点