WebView.HitTestResult的使用

在微信里看文章,文章都是网页,但长按图片后会弹出一个对话框让用户选择要进行的操作,这个操作我想很多人都很熟悉,那天笔者竟突然觉得有些神奇,难道说WebView有相应的API可以对页面上的资源类型进行区分吗?查了一下资料后发现确实如此,特此记录一下:

        //长按处理各种类型的事件
        mWebView.setOnLongClickListener(new OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                WebView.HitTestResult result = mWebView.getHitTestResult();
                if (null == result)
                    return false;
                int type = result.getType();
                switch (type) {
                    case WebView.HitTestResult.EDIT_TEXT_TYPE: // 选中的文字类型
                        break;
                    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: // 带有链接的图片类型
                    case WebView.HitTestResult.IMAGE_TYPE: // 处理长按图片的菜单项
                        String url = result.getExtra();
                        if (url != null && URLUtil.isValidUrl(url)) {
                            //弹框
                        }
                        return true;
                    case WebView.HitTestResult.UNKNOWN_TYPE: //未知
                        break;
                }
                return false;
            }
        });

基于这个东东,我们可以对网页不同的资源进行不同的处理操作,只要你封装得好,你可以打造一个功能齐全的WebView,当然,建议使用腾讯X5内核替换系统自带的WebView!

你可能感兴趣的:(WebView.HitTestResult的使用)