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

时间:2012-08-09 10:54:16

标签: java android webview copy-paste android-4.2-jelly-bean

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

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

以下代码适用于ICS之前的所有版本基于:How to enable the default highlight menus in 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);
        }
    }
}

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

1 个答案:

答案 0 :(得分:2)

我在这里的评论中列出了一个潜在的解决方案:How to enable the default highlight menus in android webview?

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

KeyEvent enterEvent = new KeyEvent(0,0,KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_ENTER,0,0);
enterEvent.dispatch(this); 

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