如何使用 Crosswalk 长按获取 URL?
Posted
技术标签:
【中文标题】如何使用 Crosswalk 长按获取 URL?【英文标题】:How to get the URL on long press using Crosswalk? 【发布时间】:2016-02-21 15:17:34 【问题描述】:我注意到,当长按 XWalkView 内的链接时,什么都没有。我想处理您在 Chrome 中看到的链接的长按(当您长按蓝色链接时)。我不需要你知道如何创建对话框,我想知道如何拦截长按事件。
(注意这是android相关的)
我不在乎为此使用 javascript,但它必须工作。
我尝试使用onLongClickListener
,但无法从中获取 URL。
这是当前代码:
//...
private static Handler handler = new Handler();
private static Runnable longPressRunnable = new Runnable()
@Override
public void run()
Logging.logd("Long press detected");
;
//...
public static final View.OnTouchListener
mainOnTouchListener = new View.OnTouchListener()
//...
@Override
public boolean onTouch(View view, MotionEvent motionEvent)
switch(motionEvent.getAction())
case MotionEvent.ACTION_DOWN:
handler.postDelayed(longPressRunnable, 1200);
//...
break;
case MotionEvent.ACTION_UP:
handler.removeCallbacks(longPressRunnable);
//...
break;
case MotionEvent.ACTION_MOVE:
//...
handler.removeCallbacks(longPressRunnable);
break;
default: break;
return false;
请注意,XWalkView 确实不支持 HitTestResult,所以不要告诉我用它作为答案。
【问题讨论】:
【参考方案1】:实际上,仅使用触摸侦听器是不可能做到这一点的。我将不得不用 javascript/jQuery 处理它或找到另一种方法。我将其标记为已解决,因为我会按照自己的方式行事,而这根本不会引起注意。
更新:
Crosswalk 终于添加了它。你可以在这里找到如何做到这一点:https://github.com/xdevs23/Cornowser/blob/master/app/src/main/java/io/xdevs23/cornowser/browser/browser/xwalk/CrunchyWalkView.java#L109
代码 sn-p(摘自以上链接):
// Thanks to chuan.liu (XWALK-7233) for the awesome example
setOnLongClickListener(new View.OnLongClickListener()
@Override
public boolean onLongClick(View v)
XWalkHitTestResult result = ((CrunchyWalkView) v).getHitTestResult();
XWalkHitTestResult.type resultType = result.getType();
if(result.getExtra() == null) return false;
switch (resultType)
case IMAGE_TYPE:
onLongPress(result.getExtra(), result.getExtra(), true);
break;
case PHONE_TYPE:
break;
default:
onLongPress(result.getExtra(), result.getExtra(), false);
break;
return true;
);
【讨论】:
以上是关于如何使用 Crosswalk 长按获取 URL?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android WebView 中使用 HitTestResult 获取链接 URL,用于使用 Longclick 链接图像(而不是图像 URL)
如何为 ListActivity 的 Listeview 项捕获长按事件?