获取Android webview的点击元素
经常看见别人的App里webview长按图片就能显示大图,点击号码可以直接找电话,那这是怎么实现的呢
WebView的getHitTestResult()的函数可以获取点击页面元素的类型,然后,我们再根据类型进行相应的处理
1 HitTestResult result = ((WebView) v).getHitTestResult()
HitTestResult 类
方法 | 描述 |
getType() | 获取所选中目标的类型,可以是图片,超链接,邮件,电话等等 |
getExtra() | 获取额外的信息 |
具体的使用:
1 mWebView.setOnLongClickListener(new OnLongClickListener() {
2
3 public boolean onLongClick(View v) {
4 HitTestResult result = ((WebView) v).getHitTestResult();
5 if (null == result)
6 return false;
7 int type = result.getType();
8 switch (type) {
9 case WebView.HitTestResult.EDIT_TEXT_TYPE: // 选中的文字类型
10 break;
11 case WebView.HitTestResult.PHONE_TYPE: // 处理拨号
12 break;
13 case WebView.HitTestResult.EMAIL_TYPE: // 处理Email
14 break;
15 case WebView.HitTestResult.GEO_TYPE: // 地图类型
16 break;
17 case WebView.HitTestResult.SRC_ANCHOR_TYPE: // 超链接
18 break;
19 case WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE: // 带有链接的图片类型
20 case WebView.HitTestResult.IMAGE_TYPE: // 处理长按图片的菜单项 }
21 return true;
22 case WebView.HitTestResult.UNKNOWN_TYPE: //未知
23 break;
24 }
25 return false;
26 }
27 });
下面有所有枚举类型定义:
类型名 |
意义 |
WebView.HitTestResult.UNKNOWN_TYPE |
未知类型 |
WebView.HitTestResult.PHONE_TYPE |
电话类型 |
WebView.HitTestResult.EMAIL_TYPE |
电子邮件类型 |
WebView.HitTestResult.GEO_TYPE |
地图类型 |
WebView.HitTestResult.SRC_ANCHOR_TYPE |
超链接类型 |
WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE |
带有链接的图片类型 |
WebView.HitTestResult.IMAGE_TYPE |
单纯的图片类型 |
WebView.HitTestResult.EDIT_TEXT_TYPE |
选中的文字类型
|