Android中WebView最常用的属性
来源:互联网 发布:凤凰金融 以大数据 编辑:程序博客网 时间:2024/05/18 05:05
WebView基本使用:
1、加载网页、刷新网页、前进、后退
在xml文件中
<WebView android:id="@+id/wv_test" android:layout_width="match_parent" android:layout_height="match_parent" />
在java代码中:
WebView wvTest = (WebView)findViewById(R.id.wv_banner);//加载网络网页wvTest.loadUrl("http://www.baidu.com");//加载本地网页wvTest.loadData("file:///android_asset/refresh/refresh.html");//返回上个页面if(wvTest.canGoBack()){ wvTest.goBack();}//去刚才浏览的页面if(wvTest.canGoForward()){ wvTest.goForward();}//刷新当前页面wvTest.reload();
2、设置一些参数
注: 需要用到什么设置,随时查一下即可。最后一条在加载含有Html5新标签的网页的时候需要加上这句话。
WebSettings settings = wvTest.getSettings();settings.setJavaScriptEnabled(true);//支持javascriptsettings.setUseWideViewPort(true);//适配屏幕settings.setLoadWithOverviewMode(true);settings.setBuiltInZoomControls(true);//支持放大缩小settings.setDisplayZoomControls(false);//隐藏放大缩小的按钮settings.setDomStorageEnabled(true);//支持Html5标签……等
3、获取网页标题
class MyWebViewChromeClient extends WebChromeClient{ @Override public void onReceivedTitle(WebView view, String title) { super.onReceivedTitle(view, title); L.D("title就是网页标题:" + title); }}wvTest.setWebChromeClient(new MyWebViewChromeClient());
4、下载文件
wvTest.setDownloadListener(new DownloadListener() { @Override public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) { //需要下载的文件的地址就是url,及可以下载文件 }});
调用系统浏览器去下载文件(updateUrl是下载地址):
Intent intent= new Intent();intent.setAction("android.intent.action.VIEW");Uri content_url = Uri.parse(updateUrl);intent.setData(content_url); startActivity(Intent.createChooser(intent, "请选择浏览器"));
5、WebView错误码处理
就在网页加载失败、没有网络的情况下WebView会把加载的网页地址显示出来。为了避免这种情况,我们需要做如下处理:
class MyWebViewClient extends WebViewClient{ @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { super.onReceivedError(view, errorCode, description, failingUrl); //在这里进行加载错误、没有网络情况的处理 //方式1:加载一个本地的默认页面 wvTest.loadData("file:///android_asset/refresh/refresh.html"); //方式2:显示一个默认布局 tvDefault.setText("网页加载失败"); wvTest.setVisibility(View.GONE); }}wvTest.setWebViewClient(new MyWebViewClient());
6、和JavaScript交互(简单的调用、传值)
Java代码:
//被javascript调用的类class CalledByJs { private Context mContext; public CalledByJs(Context context){ this.mContext = context; } //在js中被调用的方法 @JavascriptInterface public void callFromJs(){ Toast.makeText(mContext, "js调用啦~", Toast.LENGTH_LONG).show(); }}settings.setJavaScriptEnabled(true);wvTest.addJavascriptInterface(new CalledByJs(this), "demo");
JavaScript代码:
function call(){ demo.callFromJs();}<img src="img/refreshicon.png" onclick="call()" alt="轻触屏幕重新刷新" />
7、WebView自定义拦截
@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) { if(!TextUtils.isEmpty(url)){ if("open_login".equals(url)){ Intent intent = new Intent(this,LoginActivity.class); startActivity(intent); return true; }else { return false; } } return super.shouldOverrideUrlLoading(view, url);}
这里解释一下这个方法的返回值:
返回true:
webview处理url是根据程序来执行的。即:如果返回为true,即不再会通过webview加载,而是执行你写的拦截的程序,如果没有的话就不执行(不执行就是,内容有href,超链接也不会跳转了)
返回false:
webview处理url是在webview内部执行。返回false的话就可以执行内容的超链接跳转。
8、获取Web页面的标题,显示Web加载进度
其中显示Web页面加载进度有两种方式:
class MyChromeClient extends WebChromeClient{ //获取Web页面标题 @Override public void onReceivedTitle(WebView view, String title) { title(title); if(TextUtils.isEmpty(shareDesc)){ shareDesc = title; shareTitle = title; } } //显示Web页面加载进度 方式1: @Override public void onProgressChanged(WebView view, int newProgress){ if (newProgress == 100) { pbWebLoad.setVisibility(View.GONE); } else { if (View.GONE == pbWebLoad.getVisibility()) { pbWebLoad.setVisibility(View.VISIBLE); } pbWebLoad.setProgress(newProgress); } super.onProgressChanged(view, newProgress); }}//显示Web页面加载进度 方式2:private class MyWebViewClient extends WebViewClient{@Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); //弹Loading框进行加载 } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); //消失Loading框,加载完毕 }}
9、清空WebView缓存
/** * WebView清空缓存 */public static void clearCache(Context context) { CookieSyncManager cookieSyncMngr = CookieSyncManager.createInstance(context); CookieManager cookieManager = CookieManager.getInstance(); cookieManager.removeAllCookie(); context.deleteDatabase("webview.db"); context.deleteDatabase("webviewCache.db"); context.deleteDatabase("webviewCookiesChromium.db"); context.deleteDatabase("webviewCookiesChromiumPrivate.db"); //WebView 缓存文件 File webviewCacheDir = new File(context.getCacheDir().getAbsolutePath()+"/webviewCacheChromium"); //删除webview 缓存目录 if(webviewCacheDir.exists()){ deleteFile(webviewCacheDir); } }
10、访问https地址
wvTest.setWebViewClient(new WebViewClient(){ @Override public void onReceivedSslError(WebView view,SslErrorHandler handler, SslError error) { super.onReceivedSslError(view, handler, error); //handler.cancel(); // Android默认的处理方式 handler.proceed(); // 接受所有网站的证书 //handleMessage(Message msg); // 进行其他处理 } });
1 0
- Android中WebView最常用的属性
- Android中WebView的属性大全
- android中常用的属性
- Android中WebView的知识详解,属性大全
- Android中WebView使用和WebSettings的属性
- android中webView 的基本使用与属性总汇
- WebView的基本常用属性 及方法
- iOS开发中属性最常用的关键字及其定义
- iOS开发中属性最常用的关键字及其定义
- android中最常用的设计模式
- Android WebView的常用方法
- android 中几个常用属性的设置
- Android 中几个常用属性的设置
- android 中几个常用属性的设置
- Android布局文件中常用的属性
- Android布局中几个常用的属性
- Android 中shape 的常用属性
- Android中常用属性的设置
- org.hibernate.MappingException: entity class not found
- VS 2013控制台应用程序DLL生成与调用
- 欢迎使用CSDN-markdown编辑器
- Java 中关于常量池与缓存类的一点理解
- Codeforces Round #382 (Div. 1) B. Taxes
- Android中WebView最常用的属性
- OpenCV中imread失败cvLoadImage成功
- css3轮播图
- java \\u \u 转换
- css阴影效果实现方法
- 知识库--The HttpProcessor Class
- PHP中“简单工厂模式”实例讲解
- 【LeetCode】136. Single Number
- 历年NOI/省选【水题】解题报告:NOI2012-随机数生成器