我 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。
提取的溶液:
长按监听器:
...
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/