2012-08-09 18 views
6

Ich muss Textauswahlmodus in einem WebView programmatisch auslösen, aber der Code, den ich verwendet habe, funktioniert nicht auf Jelly Bean?Android: Programmatically Trigger Textauswahlmodus in einem WebView auf Jelly Bean

Ich habe den folgenden Code verwendet, aber es funktioniert nicht mehr auf Android 4.1 (Jelly Bean), weil WebView.Text, emulateShiftHeld und der Schlüsselversand nicht mehr auf Jelly Bean unterstützt werden.

folgenden Code, der auf allen Versionen bis zu ICS arbeitet basiert auf: 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); 
     } 
    } 
} 

Wie kann ich eine ähnliche Funktionalität implementieren, die auf Jelly Bean funktioniert?

+0

Hey @Martin, hast du das endlich gelöst ?? – davids

+0

Hallo David, ich habe eine mögliche Lösung in den Kommentaren hier aufgeführt: http://StackOverflow.com/Questions/7581131/How-Toen-Enable-the-default-Highlight-Menus-in-android-Webview – Martin

+0

Dank @Martin :) – davids

Antwort

2

ich eine mögliche Lösung in den Kommentaren hier aufgeführt habe: How to enable the default highlight menus in android webview?

Hier ist der Inhalt der möglichen Lösung: Nach android.webkit.WebViewClassic Analyse Ich habe einige Erfolge mit folgendem hat:

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

I dachte mehr könnte erforderlich sein, da ich die WebView ein wenig vor dem oben genannten funktionierte, wenn Sie einen Emulator verwenden, aber nach dem Testen auf einem echten JellyBean-Gerät scheint das obige gut zu funktionieren.