Android:以编程方式在Jelly Bean上的WebView中触发文本选择模式

Mar*_*tin 6 java android copy-paste webview android-4.2-jelly-bean

我需要在WebView中以编程方式触发文本选择模式,但我使用的代码不适用于Jelly Bean?

我一直在使用以下代码,但它不再适用于Android 4.1(Jelly Bean),因为Jelly Bean不再支持WebView.selectText,emulateShiftHeld和密钥发送.

以下代码适用于ICS以上的所有版本基于:如何启用android webview中的默认高亮菜单?

public void selectAndCopyText() {
    try {
        // ICS
            WebView.class.getMethod("selectText").invoke(this);
        } catch (Exception e1) {
        try {
            Method m = WebView.class.getMethod("emulateShiftHeld", (Class[])null);
            m.invoke(this, (Object[])null);
        } catch (Exception e2) {
            // fallback
            KeyEvent shiftPressEvent = new KeyEvent(0,0,
                     KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_SHIFT_LEFT,0,0);
            shiftPressEvent.dispatch(this);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如何实现适用于Jelly Bean的类似功能?

Mar*_*tin 2

我在此处的评论中列出了一个潜在的解决方案:How to enable the defaulthighlight menus in android webview?

以下是潜在解决方案的内容:经过分析,android.webkit.WebViewClassic我在以下方面取得了一些成功:

KeyEvent enterEvent = new KeyEvent(0,0,KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_ENTER,0,0);
enterEvent.dispatch(this); 
Run Code Online (Sandbox Code Playgroud)

WebView我认为可能需要更多,因为在使用模拟器时,我需要在上面的工作之前向下滚动一点,但在真正的 JellyBean 设备上测试后,上面的工作似乎很好。