6

WebView でテキスト選択モードをプログラムでトリガーする必要がありますが、使用したコードは Jelly Bean では機能しませんか?

次のコードを使用していますが、Android 4.1 (Jelly Bean) では機能しなくなりました。これは、WebView.selectText、emulateShiftHeld、およびキー ディスパッチが Jelly Bean でサポートされなくなったためです。

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 で動作する同様の機能を実装するにはどうすればよいですか?

4

1 に答える 1

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 デバイスでテストした後、上記は正常に機能するようです。

于 2012-09-21T19:29:16.370 に答える