6

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

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

以下适用于 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);
        }
    }
}

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

4

1 回答 1

2

我在这里的评论中列出了一个潜在的解决方案:如何在 android webview 中启用默认突出显示菜单?

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

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

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

于 2012-09-21T19:29:16.370 回答