android.webkit.WebView#HitTestResult ( )源码实例Demo

下面列出了android.webkit.WebView#HitTestResult ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: FairEmail   文件: WebViewEx.java
@Override
public boolean onLongClick(View view) {
    WebView.HitTestResult result = ((WebView) view).getHitTestResult();
    if (result.getType() == WebView.HitTestResult.IMAGE_TYPE ||
            result.getType() == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) {
        Log.i("Long press url=" + result.getExtra());

        Uri uri = Uri.parse(result.getExtra());
        if ("cid".equals(uri.getScheme()) || "data".equals(uri.getScheme()))
            return false;

        Helper.view(getContext(), uri, true);

        return true;
    }
    return false;
}
 
源代码2 项目: YCWebView   文件: FirstActivity2.java
@Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            //判断重定向的方式一
            WebView.HitTestResult hitTestResult = view.getHitTestResult();
            if(hitTestResult == null) {
                return false;
            }
            if(hitTestResult.getType() == WebView.HitTestResult.UNKNOWN_TYPE) {
                //X5LogUtils.i("-------重定向-------");
                return false;
            }

            if (webView.isTouchByUser()){
                X5LogUtils.i("-------点击事件-------");
            }
            view.loadUrl(url);
            X5LogUtils.i("-----shouldOverrideUrlLoading------loadUrl-------");
//            running++;
            return true;
            //return super.shouldOverrideUrlLoading(view, url);
        }
 
源代码3 项目: YCWebView   文件: FirstActivity1.java
@Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            //判断重定向的方式一
            X5LogUtils.i("-----shouldOverrideUrlLoading---------"+url);
            WebView.HitTestResult hitTestResult = view.getHitTestResult();
            if(hitTestResult == null) {
                return false;
            }
            if(hitTestResult.getType() == WebView.HitTestResult.UNKNOWN_TYPE) {
                //X5LogUtils.i("-------重定向-------");
                return false;
            }
            view.loadUrl(url);
            //X5LogUtils.i("-----shouldOverrideUrlLoading-----2----"+url);
//            running++;
            return true;
            //return super.shouldOverrideUrlLoading(view, url);
        }
 
源代码4 项目: YCWebView   文件: FirstActivity3.java
@Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            //判断重定向的方式一
            WebView.HitTestResult hitTestResult = view.getHitTestResult();
            if(hitTestResult == null) {
                return false;
            }
            if(hitTestResult.getType() == WebView.HitTestResult.UNKNOWN_TYPE) {
                //X5LogUtils.i("-------重定向-------");
                return false;
            }

            if (webView.isTouchByUser()){
                X5LogUtils.i("-------点击事件-------");
            }
            view.loadUrl(url);
            X5LogUtils.i("-----shouldOverrideUrlLoading------loadUrl-------");
//            running++;
            return true;
            //return super.shouldOverrideUrlLoading(view, url);
        }
 
源代码5 项目: Dashchan   文件: WebBrowserActivity.java
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
	WebView.HitTestResult hitTestResult = webView.getHitTestResult();
	switch (hitTestResult.getType()) {
		case WebView.HitTestResult.IMAGE_TYPE:
		case WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE: {
			final Uri uri = Uri.parse(hitTestResult.getExtra());
			ChanLocator locator = ChanLocator.getDefault();
			if (locator.isWebScheme(uri) && locator.isImageExtension(uri.getPath())) {
				menu.add(R.string.action_view).setOnMenuItemClickListener(item -> {
					NavigationUtils.openImageVideo(WebBrowserActivity.this, uri, false);
					return true;
				});
			}
			break;
		}
	}
}
 
源代码6 项目: Pixiv-Shaft   文件: FragmentWebView.java
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
    WebView.HitTestResult result = mWebView.getHitTestResult();
    mIntentUrl = result.getExtra();
    menu.setHeaderView(new ContextMenuTitleView(mContext, mIntentUrl));

    if (result.getType() == WebView.HitTestResult.SRC_ANCHOR_TYPE) {
        mIntentUrl = result.getExtra();
        //menu.setHeaderTitle(mIntentUrl);
        menu.add(Menu.NONE, WebViewClickHandler.OPEN_IN_BROWSER, 0, R.string.webview_handler_open_in_browser).setOnMenuItemClickListener(handler);
        menu.add(Menu.NONE, WebViewClickHandler.COPY_LINK_ADDRESS, 1, R.string.webview_handler_copy_link_addr).setOnMenuItemClickListener(handler);
        menu.add(Menu.NONE, WebViewClickHandler.COPY_LINK_TEXT, 1, R.string.webview_handler_copy_link_text).setOnMenuItemClickListener(handler);
        menu.add(Menu.NONE, WebViewClickHandler.DOWNLOAD_LINK, 1, R.string.webview_handler_download_link).setOnMenuItemClickListener(handler);
        menu.add(Menu.NONE, WebViewClickHandler.SHARE_LINK, 1, R.string.webview_handler_share).setOnMenuItemClickListener(handler);
    }

    if (result.getType() == WebView.HitTestResult.IMAGE_TYPE ||
            result.getType() == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) {

        mIntentUrl = result.getExtra();
        //menu.setHeaderTitle(mIntentUrl);
        menu.add(Menu.NONE, WebViewClickHandler.OPEN_IN_BROWSER, 0, R.string.webview_handler_open_in_browser).setOnMenuItemClickListener(handler);
        menu.add(Menu.NONE, WebViewClickHandler.OPEN_IMAGE, 1, R.string.webview_handler_open_image).setOnMenuItemClickListener(handler);
        menu.add(Menu.NONE, WebViewClickHandler.DOWNLOAD_LINK, 2, R.string.webview_handler_download_link).setOnMenuItemClickListener(handler);
        menu.add(Menu.NONE, WebViewClickHandler.SEARCH_GOOGLE, 2, R.string.webview_handler_search_with_ggl).setOnMenuItemClickListener(handler);
        menu.add(Menu.NONE, WebViewClickHandler.SHARE_LINK, 2, R.string.webview_handler_share).setOnMenuItemClickListener(handler);

    }
}
 
源代码7 项目: 4pdaClient-plus   文件: AdvWebView.java
@Override
public boolean onTouchEvent(android.view.MotionEvent event) {
    boolean b = super.onTouchEvent(event);
    try {

        if (mOnScrollChangedCallback == null) return b;
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN: {
                m_MotionDown = new Point((int) event.getX(), (int) event.getY());
                m_InTouch = true;
                final WebView.HitTestResult hitTestResult = getHitTestResult();
                if (hitTestResult == null) {
                    startClickTime = Calendar.getInstance().getTimeInMillis();
                } else
                    switch (hitTestResult.getType()) {
                        case WebView.HitTestResult.UNKNOWN_TYPE:
                        case WebView.HitTestResult.EDIT_TEXT_TYPE:
                            startClickTime = Calendar.getInstance().getTimeInMillis();
                    }

                break;
            }
            case MotionEvent.ACTION_UP: {
                m_InTouch = false;
                long clickDuration = Calendar.getInstance().getTimeInMillis() - startClickTime;
                if (clickDuration < MAX_CLICK_DURATION &&m_MotionDown!=null&& Math.abs(m_MotionDown.y - event.getY()) < MAX_TOUCH__Y_DISTANCE) {
                    mOnScrollChangedCallback.onTouch();
                }
            }
        }
    } catch (Throwable ex) {
        AppLog.e(getContext(), ex);
    }finally {
        m_LastMotionEvent = new Point((int) event.getX(), (int) event.getY());
    }

    return b;

}
 
源代码8 项目: Beedio   文件: BrowserWindow.java
@Override
public boolean onLongClick(View v) {
    final WebView.HitTestResult hit = page.getHitTestResult();
    if (hit.getType() == WebView.HitTestResult.SRC_ANCHOR_TYPE) {
        if (hit.getExtra() != null) {
            View point = new View(getActivity());
            point.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams
                    .WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
            if (view != null) {
                ((ViewGroup) view).addView(point);
            }
            point.getLayoutParams().height = 10;
            point.getLayoutParams().width = 10;
            point.setX(page.getClickX());
            point.setY(page.getClickY());
            PopupMenu menu = new PopupMenu(getActivity(), point);
            menu.getMenu().add("Open in new window");
            menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem item) {
                    getLMvdActivity().getBrowserManager().newWindow(hit.getExtra());
                    return true;
                }
            });
            menu.show();
        }
    }
    return true;
}
 
源代码9 项目: MaoWanAndoidClient   文件: PageDetailActivity.java
/**
 * 长按图片事件处理
 */
private boolean handleLongImage() {
    final WebView.HitTestResult hitTestResult = webView.getHitTestResult();
    // 如果是图片类型或者是带有图片链接的类型
    if (hitTestResult.getType() == WebView.HitTestResult.IMAGE_TYPE ||
            hitTestResult.getType() == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) {
        // 弹出保存图片的对话框
        new AlertDialog.Builder(PageDetailActivity.this)
                .setItems(new String[]{"查看大图", "保存图片到相册"}, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        String picUrl = hitTestResult.getExtra();
                        //获取图片
                        Log.e("picUrl", picUrl);
                        switch (which) {
                            case 0:
                                break;
                            case 1:
                                break;
                            default:
                                break;
                        }
                    }
                })
                .show();
        return true;
    }
    return false;
}
 
源代码10 项目: YiZhi   文件: BaseWebViewLoadPresenter.java
@Override
public void imageLongClicked(WebView.HitTestResult hitTestResult) {
    if (null == hitTestResult)
        return;

    int type = hitTestResult.getType();
    switch (type) {
        case WebView.HitTestResult.UNKNOWN_TYPE:
            return;
        case WebView.HitTestResult.PHONE_TYPE: // 处理拨号
            break;
        case WebView.HitTestResult.EMAIL_TYPE: // 处理Email
            break;
        case WebView.HitTestResult.GEO_TYPE:
            break;
        case WebView.HitTestResult.SRC_ANCHOR_TYPE: // 超链接
            break;
        case WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE:
            break;
        case WebView.HitTestResult.IMAGE_TYPE: // 处理长按图片的菜单项
            if (mIView != null)
                mIView.showPopupWindow();
            break;
        default:
            break;
    }
}
 
源代码11 项目: FaceSlim   文件: MainActivity.java
@Override
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo) {
    WebView.HitTestResult result = webView.getHitTestResult();
    if (result != null) {
        int type = result.getType();

        if (type == WebView.HitTestResult.IMAGE_TYPE || type == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) {
            showLongPressedImageMenu(menu, result.getExtra());
        }
    }
}
 
源代码12 项目: ByWebView   文件: WebViewActivity.java
/**
 * 长按图片事件处理
 */
private boolean handleLongImage() {
    final WebView.HitTestResult hitTestResult = webView.getHitTestResult();
    // 如果是图片类型或者是带有图片链接的类型
    if (hitTestResult.getType() == WebView.HitTestResult.IMAGE_TYPE ||
            hitTestResult.getType() == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) {
        // 弹出保存图片的对话框
        new AlertDialog.Builder(WebViewActivity.this)
                .setItems(new String[]{"查看大图", "保存图片到相册"}, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        String picUrl = hitTestResult.getExtra();
                        //获取图片
                        Log.e("picUrl", picUrl);
                        switch (which) {
                            case 0:
                                break;
                            case 1:
                                break;
                            default:
                                break;
                        }
                    }
                })
                .show();
        return true;
    }
    return false;
}
 
源代码13 项目: ClickableWebView   文件: ClickableWebView.java
@Override
public void onClick(View view) {
    WebView.HitTestResult hr = getHitTestResult();
    try {
        if (listener != null && hr.getType() == IMAGE_TYPE) {
            listener.onClick(hr.getExtra());
        }
    } catch (Exception e) {
        e.getStackTrace();
    }
}
 
源代码14 项目: CloudReader   文件: WebViewActivity.java
/**
     * 长按图片事件处理
     */
    private boolean handleLongImage() {
        final WebView.HitTestResult hitTestResult = webView.getHitTestResult();
        // 如果是图片类型或者是带有图片链接的类型
        if (hitTestResult.getType() == WebView.HitTestResult.IMAGE_TYPE ||
                hitTestResult.getType() == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) {
            // 弹出保存图片的对话框
            new AlertDialog.Builder(WebViewActivity.this)
                    .setItems(new String[]{"发送给朋友", "保存到相册"}, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            String picUrl = hitTestResult.getExtra();
                            //获取图片
//                            Log.e("picUrl", picUrl);
                            switch (which) {
                                case 0:
                                    ShareUtils.shareNetImage(WebViewActivity.this, picUrl);
                                    break;
                                case 1:
                                    if (!PermissionHandler.isHandlePermission(WebViewActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
                                        return;
                                    }
                                    RxSaveImage.saveImageToGallery(WebViewActivity.this, picUrl, picUrl);
                                    break;
                                default:
                                    break;
                            }
                        }
                    })
                    .show();
            return true;
        }
        return false;
    }
 
源代码15 项目: firefox-echo-show   文件: LinkHandler.java
@Override
public boolean onLongClick(View v) {
    if (callback == null) {
        return false;
    }

    final WebView.HitTestResult hitTestResult = webView.getHitTestResult();

    switch (hitTestResult.getType()) {
        case WebView.HitTestResult.SRC_ANCHOR_TYPE:
            final String linkURL = hitTestResult.getExtra();
            callback.onLongPress(new IWebView.HitTarget(true, linkURL, false, null));
            return true;

        case WebView.HitTestResult.IMAGE_TYPE:
            final String imageURL = hitTestResult.getExtra();
            callback.onLongPress(new IWebView.HitTarget(false, null, true, imageURL));
            return true;

        case WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE:
            // hitTestResult.getExtra() contains only the image URL, and not the link
            // URL. Internally, WebView's HitTestData contains both, but they only
            // make it available via requestFocusNodeHref...
            final Message message = new Message();
            message.setTarget(new Handler() {
                @Override
                public void handleMessage(Message msg) {
                    final Bundle data = msg.getData();
                    final String url = data.getString("url");
                    final String src = data.getString("src");

                    if (url == null || src == null) {
                        throw new IllegalStateException("WebView did not supply url or src for image link");
                    }

                    if (callback != null) {
                        callback.onLongPress(new IWebView.HitTarget(true, url, true, src));
                    }
                }
            });

            webView.requestFocusNodeHref(message);
            return true;

        default:
            return false;
    }
}
 
源代码16 项目: mvvm-template   文件: PrettifyWebView.java
private boolean hitLinkResult(WebView.HitTestResult result) {
    return result.getType() == WebView.HitTestResult.SRC_ANCHOR_TYPE || result.getType() == HitTestResult.IMAGE_TYPE ||
            result.getType() == HitTestResult.SRC_IMAGE_ANCHOR_TYPE;
}
 
源代码17 项目: OpenHub   文件: CodeWebView.java
private boolean hitLinkResult(WebView.HitTestResult result) {
    return result.getType() == WebView.HitTestResult.SRC_ANCHOR_TYPE ||
            result.getType() == HitTestResult.IMAGE_TYPE ||
            result.getType() == HitTestResult.SRC_IMAGE_ANCHOR_TYPE;
}
 
源代码18 项目: focus-android   文件: LinkHandler.java
@Override
public boolean onLongClick(View v) {
    if (callback == null) {
        return false;
    }

    final WebView.HitTestResult hitTestResult = webView.getHitTestResult();

    switch (hitTestResult.getType()) {
        case WebView.HitTestResult.SRC_ANCHOR_TYPE:
            final String linkURL = hitTestResult.getExtra();
            callback.onLongPress(new IWebView.HitTarget(true, linkURL, false, null));
            return true;

        case WebView.HitTestResult.IMAGE_TYPE:
            final String imageURL = hitTestResult.getExtra();
            callback.onLongPress(new IWebView.HitTarget(false, null, true, imageURL));
            return true;

        case WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE:
            // hitTestResult.getExtra() contains only the image URL, and not the link
            // URL. Internally, WebView's HitTestData contains both, but they only
            // make it available via requestFocusNodeHref...
            final Message message = new Message();
            message.setTarget(new Handler() {
                @Override
                public void handleMessage(Message msg) {
                    final Bundle data = msg.getData();
                    final String url = data.getString("url");
                    final String src = data.getString("src");

                    if (url == null || src == null) {
                        throw new IllegalStateException("WebView did not supply url or src for image link");
                    }

                    if (callback != null) {
                        callback.onLongPress(new IWebView.HitTarget(true, url, true, src));
                    }
                }
            });

            webView.requestFocusNodeHref(message);
            return true;

        default:
            return false;
    }
}
 
源代码19 项目: DevUtils   文件: WebViewAssist.java
/**
 * 获取长按事件类型
 * <pre>
 *     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 // 选中的文字类型
 *     <p></p>
 *     mWebView.setOnLongClickListener(new View.OnLongClickListener() {
 *          @Override
 *          public boolean onLongClick(View view) {
 *              WebView.HitTestResult result = webViewAssist.getHitTestResult();
 *              if(result != null) {
 *                  switch (result.getType()) {
 *                      case WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE:
 *                          String imgUrl = result.getExtra();
 *                          return true;
 *                  }
 *              }
 *              return false;
 *          }
 *      });
 *      <p></p>
 *      HitTestResult.getType() 获取所选中目标的类型, 可以是图片、超链接、邮件、电话等等
 *      HitTestResult.getExtra() 获取额外的信息
 * </pre>
 * @return 长按事件类型
 */
public WebView.HitTestResult getHitTestResult() {
    return isWebViewNotEmpty() ? mWebView.getHitTestResult() : null;
}
 
源代码20 项目: YiZhi   文件: BaseWebViewLoadContract.java
/**
 * 图片长按事件
 *
 * @param hitTestResult {@link WebView.HitTestResult}
 */
public abstract void imageLongClicked(WebView.HitTestResult hitTestResult);