Android : 如何在WebView显示的页面中查找内容
Android : 如何在WebView显示的页面中查找内容
Author : Aoyousatuo Zhao
http://blog.sina.com.cn/aoyousatuo
WebView是Android提供的常用组件之一。它主要被设计用来显示html文件。正因为如此,所以在应用的开发过程中我们可以通过将需要显示的内容整理成html格式的 String从而轻松实现各种排版的效果。
虽然WebView组件封装了许多功能为应用的开发提供了便利,但是由于其开放的方法有限,有时候这种便利往往会给开发者造成很大的约束,例如开发者不能方便的控制WebView的显示起始行,不能得到相关的行信息等。所以说WebView方便大众的时候也难免会存在许多不足之处。
寡人在开发应用的过程中就遇到了一个难题:将html中指定的内容显示到当前屏幕中。怎么解决这个问题呢?寡人一遍遍地研究WebView开放的方法,始终没有得到很好的方案。白道不行,咱就来黑道,正史不行,咱就搜集野史,所谓条条大路通罗马嘛!于是寡人就到处搜寻WebView的源代码,希望通过非常规的办法(调用WebView类库中未开放的方法)有所起色。但是非常困难。并且显而易见,即使找到了,也是不安全的调用。这就像上海的楼倒倒,说不定什么时候就坍为平地。此路不但坎坷,前途未卜,而且有可能是断头路。
苍天啊!寡人虽然贵为天子但是有时候也很无奈,怎么办?寡人再次无奈地又审视了一下WebView开放的那几个可怜的方法。最后想了想,它们中最有希望救驾的只有findAll和findNext了。于是寡人想,如果能保证需要定位的内容的唯一性,通过搜寻需要定位的内容,不就把该内容显示到当前屏幕了吗?于是寡人大喜,打算着手一试,成功后举国欢庆。
但是,寡人一看帮助文档,这两个方法的说明为空,于是心中隐隐约约有一丝不安。果不其然,程序中一试,没有任何效果。寡人只好去咨询中西两位辅政大臣百度和谷歌了。终于……有了答案。下面就下诏天下,各位爱卿听仔细了:
先看辅政大臣给朕的说法:
Find is not a fully supported feature in webview.
However, try calling view.setFindIsUp(true) to get the match to draw; This function is hidden and subject to change, so your app may break in a future release.
WebView对搜寻查找功能不能充分地支持。然而,我们可以尝试着调用setFindIsUp方法来得到查询的结果,并且把它显示在当前屏幕(画出来)。这个方法被隐藏并且容易发生变化,所以你的应用或许在未来的版本中不能正常地使用它。
由此可见,要想findAll 和 findNext起作用,必须调用setFindIsUp方法,但是此方法是内部函数,因此安全性不能保证,或许在未来某个版本就被和谐了。
尽管如此,这也是目前唯一较稳妥的一种解决方案。以后版本如果不能正常使用,说不定WebView会有更好的支持方法呢!
Example :
假设WebView已经装载了html内容,下面是搜寻部分的程序:
WebView webView = (WebView)findViewById(R.id.webView) ;
webView.findAll(“a”) ;
try{
Method m = WebView.class.getMethod(“setFindIsUp”, Boolean.TYPE) ;
m.invoke(webView, true) ;
}catch(Throwable ignored)
{
}
findNext的使用同理,这里不再累述。
总结:
l WebView 的findAll & findNext方法必须配合类内部方法setFindIsUp使用.
l findAll效果是用空心框反白所有匹配的内容,用实心框反白第一个搜寻到的匹配内容,并且将其显示到当前屏幕。
l 如果需要取消搜寻的状态,可以调用clearMatches方法。
另外,如果从本文章中获益,请支持一下寡人。
Android : 如何在WebView显示的页面中查找内容的更多相关文章
- 用Seam实现:图片上传 + 保存到数据库 + 从数据库读出图片并显示到页面中
上传图片并保存到数据库 seam给我们提供了 s:fileUpload 标签以完成文件上传功能.使用该标签时,要在web.xml中声明一个Seam的过滤器: <filter> <fi ...
- 解决方案:ppt打不开,显示发现文件中的内容有问题。可尝试修复此演示文稿
ppt打不开,显示发现文件中的内容有问题.可尝试修复此演示文稿 故障截图如下: 解决方法: 主要是因为文件是网络下载的,office自动锁定了文件(默认不可编辑).在文件上右键-属性-解除锁定(最下面 ...
- ppt打不开,显示发现文件中的内容有问题。可尝试修复此演示文稿
ppt打不开,显示发现文件中的内容有问题.可尝试修复此演示文稿 PPT发现要打开的文件有问题,修复后无法打开该文件 解决方法: 主要是因为文件是网络下载的,office自动锁定了文件(默认不可编辑). ...
- Java连接MySQL数据库。编写一个应用程序,在主类Test_4类中,通过JDBC访问stu数据库,显示t_student表中的内容(表结构见表1),显示效果自己设计。
题目2:编写一个应用程序,在主类Test_4类中,通过JDBC访问stu数据库,显示t_student表中的内容(表结构见表1),显示效果自己设计.之后,可根据显示的内容进行某条记录的删除(以id为条 ...
- Android 之 用WebView显示网页
WebView可以使得网页轻松的内嵌到 app 里,还可以直接跟js相互调用. WebView有两个方法:setWebChromeClient 和 setWebClient (1) setWebCli ...
- HTML5学习总结-10 Android 控件WebView显示网页
WebView可以使得网页轻松的内嵌到app里,还可以直接跟js相互调用. webview有两个方法:setWebChromeClient 和 setWebClient 1)setWebClient: ...
- 笔记-返回到前一个页面时显示前一个页面中ajax获取的数据
笔记第一部分:http://www.cnblogs.com/zczhangcui/p/6869219.html 在第一部分遇到的问题是,用ajax获取了一系列列表信息后,拼接好html后插入到了原有页 ...
- ajax请求拿到多条数据拼接显示在页面中
首先我们拿到的了一坨Json数据 如下 然后通过ajax请求拿到数据 在ajax的success方法中处理和使用数据: 其中包括: 用eval处理这种数据 var outStr = eval('('+ ...
- 让浏览器不再显示 https 页面中的 http 请求警报
HTTPS 是 HTTP over Secure Socket Layer,以安全为目标的 HTTP 通道,所以在 HTTPS 承载的页面上不允许出现 http 请求,一旦出现就是提示或报错: Mix ...
随机推荐
- [转载]ios app 发布遇到的问题uinewsstandapp=true
原文地址:ios app 发布遇到的问题uinewsstandapp=true 作者:Capacity To include newsstand features, the info.plist mu ...
- Shell防DDOS攻击原理
#!/bin/sh #date:2015-12-13 #filename:fang-DOS.sh #version:v1.0 while true do #awk '{print $1}' ...
- 把Nginx加入系统服务 service nginx (start | stop | restart | reload)
vim /etc/init.d/nginx 1 #!/bin/bash 2 # nginx Startup script for the Nginx HTTP Server 3 # it is v ...
- Velocity 语法示例
一.简介: 1)它允许任何人使用简单而强大的模板语言来引用定义在 java 代码中的对象" 2)Velocity是一个基于java的模板引擎,简称VTL(Velocity Template ...
- PullToRefresh的使用
主界面↓ package com.wangzhen.pulltorefresh; import java.util.ArrayList; import java.util.List; import c ...
- ORA-00911: invalid character
出错原因:sql语句后面加了中文状态下的分号. 解决办法:改成英文状态下的分号即可. --本篇文章参考自:http://blog.sina.com.cn/s/blog_5b2a1aee0100n4oy ...
- Canvas--2
Canvas2(关键词:setLineDash .rect .strokeRect .clearRect .arc.sin .strokeText ) 绘制其他样式: lineCap 结束端点的设 ...
- (原)ubuntu14.04中安装gcc4.9和g++4.9
http://stackoverflow.com/questions/28683747/installing-gcc4-9-on-ubuntu-14-04-lts http://askubuntu.c ...
- uva 10994 - Simple Addition
//组合数学 //计算sum{i从右往左数的第一个非0数字,p<=i<=q}. #include <cstdio> typedef long long ll; ll sum(l ...
- Flask学习记录之Flask-Admin
相信用过Django框架的都不会忘记它强大的Admin功能,Flask-admin是一款能够与Django Admin所媲美的扩展,能够快速创建Web管理界面,实现了用户.文件增删改查等常用功能:也可 ...