android - 如何使用 HitTestResult 在 Android WebView 中使用 Longclick 获取链接图像(而不是图像 URL)的链接 URL

标签 android image url webview webviewclient

我 try catch webview 长按以显示上下文菜单。 (见下面的代码) 当长按图像时,我总是得到额外的图像 URL(对于带有 IMAGE_TYPE 的未链接图像和带有 SRC_IMAGE_ANCHOR_TYPE 的链接图像)。 但是我怎样才能获得带有超链接的图像的链接 URL(而不是图像 URL)呢?

最好的, 塞巴斯蒂安

        mywebview.setOnLongClickListener(new OnLongClickListener() {
            public boolean onLongClick(View v) {

                final WebView webview = (WebView) v;
                final WebView.HitTestResult result = webview.getHitTestResult();

                if (result.getType() == SRC_ANCHOR_TYPE) {
                    return true;
                }

                if (result.getType() == SRC_IMAGE_ANCHOR_TYPE) {
                    return true;
                }

                if (result.getType() == IMAGE_TYPE) {
                    return true;
                }

                return false;
            }
        });

最佳答案

以上解决方案均不适用于 Android 4.2.2。所以我查看了默认 android web 浏览器的源代码。我提取了这个确切问题的解决方案 - 从图像链接中获取链接 URL。

来源: https://github.com/android/platform_packages_apps_browser/blob/master/src/com/android/browser/Controller.java

提取的溶液:

长按监听器:

...
mWebview.setOnLongClickListener(new OnLongClickListener() {

    @Override
    public boolean onLongClick(View v) {
        HitTestResult result = mWebview.getHitTestResult();
        if (result.getType() == HitTestResult.SRC_IMAGE_ANCHOR_TYPE) {
            Message msg = mHandler.obtainMessage();
            mWebview.requestFocusNodeHref(msg);
        }
    }
});
...

获取 URL 的处理程序:

private Handler mHandler = new Handler() {

    @Override
        public void handleMessage(Message msg) {
            // Get link-URL.
            String url = (String) msg.getData().get("url");

            // Do something with it.
            if (url != null) ...
        }
    };

关于android - 如何使用 HitTestResult 在 Android WebView 中使用 Longclick 获取链接图像(而不是图像 URL)的链接 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12168039/

相关文章:

swift - 基于复杂图像的按钮布局

image - Play Framework : Image Display question

java - Java中的URLConnection后如何登录网站?

java - 将本地文件传递到 Java 中的 URL

image - 如何从视频中获取图像并使用 ffmpeg 组合其他图像

javascript - 当php获取字符串在当前url中时如何重定向URL

android - 为什么我的 Eclipse 工作区是空的?

android - SQLite Where IN 后跟变量 String

android - 在 android firefox 浏览器中输入时,键盘使我的屏幕变小

android - ConnectivityManager.NetworkCallback 未按预期工作