import android.os.Message; //导入方法依赖的package包/类
@Override
public boolean onLongClick(View v) {
if (callback == null) {
return false;
}
final AmazonWebView.HitTestResult hitTestResult = webView.getHitTestResult();
switch (hitTestResult.getType()) {
case AmazonWebView.HitTestResult.SRC_ANCHOR_TYPE:
final String linkURL = hitTestResult.getExtra();
callback.onLongPress(new IWebView.HitTarget(true, linkURL, false, null));
return true;
case AmazonWebView.HitTestResult.IMAGE_TYPE:
final String imageURL = hitTestResult.getExtra();
callback.onLongPress(new IWebView.HitTarget(false, null, true, imageURL));
return true;
case AmazonWebView.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;
}
}