Java 如何在android webview中启用默认突出显示菜单?
如何在android webview中启用默认的文本突出显示菜单,如:复制/粘贴/搜索/共享 试试这个:Java 如何在android webview中启用默认突出显示菜单?,java,android,Java,Android,如何在android webview中启用默认的文本突出显示菜单,如:复制/粘贴/搜索/共享 试试这个: mWebView.setHapticFeedbackEnabled(true); mWebView.setLongClickable(true); 在Android 1.5-2.3上工作时,您可以使用从2.2开始公开的emulateShiftHold(),但现在已不推荐使用。此方法将您的WebView置于文本选择模式 不幸的是,Android没有集成复制/粘贴/搜索/共享功能,因为A
mWebView.setHapticFeedbackEnabled(true);
mWebView.setLongClickable(true);
在Android 1.5-2.3上工作时,您可以使用从2.2开始公开的
emulateShiftHold()
,但现在已不推荐使用。此方法将您的WebView置于文本选择模式
不幸的是,Android没有集成复制/粘贴/搜索/共享功能,因为Android 2.0支持文本选择
可以通过触摸来驱动,但除此之外,没有其他事情可以做。我找到了一个解决方法 在WebView上签出方法selectText()(它不在API中,但可以使用反射调用) 以下是我的完整方法源代码:
public void startTextSelection() {
try {
WebView.class.getMethod("selectText").invoke(this);
} catch (Exception e) {
try {
WebView.class.getMethod("emulateShiftHeld").invoke(this);
} catch (Exception e1) {
KeyEvent shiftPressEvent = new KeyEvent(0, 0,
KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_SHIFT_LEFT, 0, 0);
shiftPressEvent.dispatch(this);
Toast.makeText(getContext(), R.string.select_text, Toast.LENGTH_LONG).show();
}
}
}
也适用于ICS。您可以推荐任何与javascript相关的东西吗?@Drax该问题的标签错误
WebView
是一个Java类,Java!=JavaScript(没有“JavaScript”)。但是,您可以尝试在WebView
显示的文档中使用触摸事件的DOM脚本来模拟这一点。我使用了上述代码,但不幸的是,selectText已从Android 4.1(Jellybean)中完全删除,因此这将不再起作用。对4.1有什么建议吗?@Martin嗯,我必须研究一下4.1的源代码,找到解决方案后会尽快给你回复:)在分析了android.webkit.WebViewClassic之后,我取得了一些成功:在分析了android.webkit.WebViewClassic之后,我在以下方面取得了一些成功:KeyEvent enterEvent=newkeyevent(0,0,KeyEvent.ACTION\u DOWN,KeyEvent.KEYCODE\u ENTER,0,0);enterEvent.dispatch(这);但可能需要更多,因为我需要在上述工作之前稍微向下滚动WebView。@Martin我想会有一些方法实现这一点,我没有时间研究源代码,但我会尽快研究;)