經常看見別人的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 |
選中的文字類型
|