2012-08-09 10 views
6

Potrzebuję programowo uruchomić tryb wyboru tekstu w WebView, ale kod, którego użyłem nie działa na Jelly Bean?Android: Programowo uruchom tryb wyboru tekstu w WebView na Jelly Bean

Używałem następującego kodu, ale nie działa on już w systemie Android 4.1 (Jelly Bean), ponieważ WebView.selectText, emulateShiftHeld i wysyłanie kluczy nie są już obsługiwane w Jelly Bean.

następujący kod, który działa na wszystkich wersjach do ICS jest oparta na: 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); 
     } 
    } 
} 

Jak wdrożyć podobną funkcjonalność, która działa na Jelly Bean?

+0

Hej @Martin, czy w końcu to rozwiązałeś? – davids

+0

Cześć Davids, Mam wymienione potencjalne rozwiązanie w komentarzach tutaj: http://stackoverflow.com/questions/7581131/how-to-enable-the-default-highlight-menus-in-android-webview – Martin

+0

Dzięki @Martin :) – davids

Odpowiedz

2

mam wymienione potencjalne rozwiązanie w komentarzach tutaj: How to enable the default highlight menus in android webview?

Oto treść potencjalnego rozwiązania: Po przeanalizowaniu android.webkit.WebViewClassic Miałem pewne sukcesy z poniższym:

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

I Myślę, że więcej może być wymagane, ponieważ potrzebowałem przewinąć w dół WebView trochę wcześniej, zanim powyższe zadziałało podczas używania emulatora, ale po testowaniu na prawdziwym urządzeniu JellyBean powyższe wydaje się działać dobrze.

Powiązane problemy