为什么80%的码农都做不了架构师?>>>   

在进行app开发时,我们会经常遇到webview加载一个网址的情况,但是仅仅是webview.loadUrl()并不能满足我们的需求,因为一般网页上面都有一个标题,,标题的颜色和我们的app风格可能整体都不太搭,这个时候该怎么办?除了让web端的朋友们专门写一个的情况下,还有另外一个方法,就是利用js或者jquery处理,原理都是一样,这里只讲一下js。

解决步骤就是:

1.查看要加载页面源代码,找到要删除的内容的标签

2.自己定义WebViewClient,重写WebViewClient的方法,在.onPageFinished()中编辑javascript函数将显示标题的部分置空或者删除

3.onPageFinished()中加载显示被JavaScript处理过的网页数据

核心代码】:

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;//webView 相关配置
public void init(){webSettings = webView.getSettings();webSettings.setDomStorageEnabled(true);  // 加载东方航空,需设置此属性,否则,页面加载为空白页//设置WebView属性,能够执行Javascript脚本webSettings.setJavaScriptEnabled(true);webView.addJavascriptInterface(new InJavaScriptLocalObj(), "local_obj");webSettings.setAllowFileAccess(true);webSettings.setUseWideViewPort(true);webSettings.setLoadWithOverviewMode(true);//清除 webkit cookie,解决webView显示原先界面CookieSyncManager.createInstance(this);CookieSyncManager.getInstance().startSync();CookieManager.getInstance().removeSessionCookie();}/加载完毕后,显示webView,防页面闪烁private void initHandler() {mHandler = new Handler(){@Overridepublic void handleMessage(Message msg) {switch (msg.what){case 0:webView.setVisibility(View.VISIBLE);SysProgress.closeProgress();//关闭加载对话框//获取网页源代码webView.loadUrl("javascript:window.local_obj.showSource('<head>'+"+ "document.getElementsByTagName('html')[0].innerHTML+'</head>');");break;}}};}final class InJavaScriptLocalObj {//获取网页源代码,分析当前页面是哪一个页@JavascriptInterfacepublic void showSource(String html) {if(loginUrl.contains("m.airchina.com.cn")){     //国航官网Document document = Jsoup.parse(html);Element nameElement = document.getElementById("uname");Element mileElement = document.getElementById("mileage");if(nameElement!= null && mileElement!= null){    // 登录成功后的页面String name = nameElement.text();String mileStr = mileElement.text();LogUtil.i("name = "+name);LogUtil.i("mile = "+mileStr);String mile="";if(mileStr.contains(":")){mile= mileStr.split(":")[1];}Toast.makeText(VerifyVipActivity.this, "认证成功", Toast.LENGTH_SHORT).show();}else{   //登录页面}}}
}【webView相关配置代码】
WebView webView = (WebView) findViewById(R.id.webview);WebSettings webSettings = webView.getSettings();webSettings.setJavaScriptEnabled(true);webSettings.setUseWideViewPort(true);webSettings.setLoadWithOverviewMode(true);webView.addJavascriptInterface(new InJavaScriptLocalObj(), "local_obj");loginUrl = "https://m.airchina.com.cn/ac/c/invoke/login@pg";webView.loadUrl(loginUrl);webView.setWebViewClient(new WebViewClient(){@Overridepublic void onPageStarted(WebView view, String url, Bitmap favicon) {super.onPageStarted(view, url, favicon);webView.setVisibility(View.INVISIBLE);SysProgress.showProgress(VerifyVipActivity.this); //显示加载对话框}@Overridepublic void onPageFinished(WebView view, String url) {super.onPageFinished(view, url);//getElementById() 返回对拥有指定 id 的第一个对象的引用。//getElementsByName()  返回带有指定名称的对象集合。//getElementsByTagName()  返回带有指定标签名的对象集合。 //getElementsByClassName   返回指定class的对象的集合。//编写 javaScript方法,使用的是js脚本语言String javascript = "javascript:function hideOther() {" +"document.getElementsByTagName('body')[0].innerHTML;" +"document.getElementsByTagName('header')[0].style.display='none';" +  //取标题栏/*改变国航登录页面的样式*/"if(document.getElementById('regbtn')){" +"document.getElementsByTagName('span')[0].style.display='none';" +"document.getElementsByTagName('span')[1].style.display='none';" +"document.getElementById('regbtn').style.display='none';" +"document.getElementById('subbtn').style.backgroundColor='#38761D';" +"document.getElementById('subbtn').style.borderColor='#ffffff';" +"document.getElementsByClassName('am-padding-left-xs')[0].style.width='100%';" +"}else{" +/*改变国航登录成功后页面的样式*/"document.getElementsByClassName('am-container')[0].style.display='none';" +"}" +"}";//创建方法view.loadUrl(javascript);//加载方法view.loadUrl("javascript:hideOther();");mHandler.sendEmptyMessageDelayed(0,500);}});

注: 因为本质是webView加载两次Url,一次是原本的Url,一次是处理过的URL ,所以刚进入页面加载的原始页面,过了一段时间是闪烁一下,加载显示的是操作后的Url. 所以,加载开始时webview不可见,显示加载对话框,加载完成后,500ms后,显示webView,关闭对话框。

解析xml源代码使用的是第三方Jsoup来解析相关标签。相关文档连接http://www.open-open.com/jsoup/

参考http://m.blog.csdn.net/article/details?id=52214460

转载于:https://my.oschina.net/fltsp/blog/796014

Android-webview加载网页去除标题相关推荐

  1. android WebView加载网页白屏问题优化处理

    android WebView加载网页白屏问题优化处理 问题描述: 使用webview加载Web界面时,会出现界面白屏的情况.http下通常问题不大,通常https白屏的可能性很大,而且通常没有任何报 ...

  2. android webview gettitle,Android-webview加载网页去除标题

    在进行app开发时,我们会经常遇到webview加载一个网址的情况,但是仅仅是webview.loadUrl()并不能满足我们的需求,因为一般网页上面都有一个标题,,标题的颜色和我们的app风格可能整 ...

  3. Android WebView加载网页,图片等元素宽度大小不兼容手机屏幕的宽度

    无论是Android手机还是iOS手机,使用WebView加载一些没有专门为手机屏幕做适配的网页的时候,就会出现网页中的图片等标签元素的宽度大小和手机屏幕的宽度不一致的情况,如下图 之所以会出现上面的 ...

  4. android webview加载网页,文字listview和image混合listview的实现

    android和ios内置浏览器支持html5,还支持CSS3和js 下面的一个小例子,我来实现android加载html页面.还有两个列表,回顾一下listview的功能.文章内容较浅,没有特别高的 ...

  5. Android WebView 加载网页只显示空白页不显示网页

    Android 在使用WebView控件将网页嵌入应用的时候有时会遇到页面显示不出来或者显示为空白页的情况 我在项目中也遇到了这个问题 , 尝试了很多方法都没有解决问题 ,最终找到了解决方法: Web ...

  6. android动态设置错误页面,Android中替换WebView加载网页失败时的页面

    我们用webView去请求一个网页链接的时候,如果请求网页失败或无网络的情况下,它会返回给我们这样一个页面,如下图所示: 上面这个页面就是系统自带的页面,你觉得是不是很丑?反正小编本人觉得非常丑,很难 ...

  7. Android WebView 加载https网页白屏,空白解决方案

    最近在做一个H5相关的需求,使用WebView加载第三方提供的https网页时显示白屏.但是调试打开Baidu和B站的https网址时就能正常打开.被这个问题困扰了半天. 合作方说是android手机 ...

  8. webview加载html跳转,WebView加载网页(二)

    WebView加载网页(二) 一.实现目标 1.实现一个页面activity_main.xml,该页面上面有一个TextView和两个WebView,一个WebView显示百度首页,另一个WebVie ...

  9. android 双 webview,Android webview加载页面

    释放双眼,带上耳机,听听看~! Android webview加载页面 private WebView webView; public void init() { webView = (WebView ...

最新文章

  1. java 调用windows bat脚本
  2. 一个MIT计算机博士对数学的思考
  3. TopCoder入门教程
  4. VSTO学习笔记(二)Excel对象模型
  5. 动感灯箱制作流程培训_2000多年的灯箱发展史,你知道多少?
  6. 第46课 精益求精 《小学生C++趣味编程》
  7. proj编译linux,安装OpenProj配置中文显示
  8. 图像边缘检测的新方向——量子算法
  9. windows下,Kiwi_Syslog日志服务器的搭建
  10. 消防水池液位报警装置设置参数
  11. mrtg流量图不更新了是怎么回事,谁有mrtg的安装及配置文档啊,求!!!
  12. win10修改账户权限
  13. 几何画板怎么画圆锥曲线,原来这么简单
  14. python 加速下载
  15. 计算机技术非全日制调剂2020,2020年硕士研究生部分非全日制专业接收调剂的公告...
  16. vlan间路由技术和生成树协议
  17. 【C语言编程练习】新娘与新郎
  18. 自己融合RGB和Depth图像
  19. docker的几种镜像仓库,你用过几个?
  20. python教程、自学python的笔记整理

热门文章

  1. L1-001. Hello World-PAT团体程序设计天梯赛GPLT
  2. Linux 中 Iptables 规则定义
  3. 猛龙出击•东莞赛区新闻发布会隆重举行,粤港澳大湾区将迎来首场搏击盛宴...
  4. 都是成年人了,别再相信OA价格越低越好这种话了
  5. x/(x+1)=ln(x+1)=x
  6. 【权限设计】一个案例,三个角色,简单说下B端产品的权限设计
  7. KVM精简教程(七):常用虚拟机管理
  8. CentOS 手工编译、手动编译安装 MongoDB
  9. DateTime Calendar
  10. C语言学习之 数组,指针,字符串. (一)