获取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 |
选中的文字类型
|