2012-05-04 17 views
27

Używam widoku internetowego do wyświetlania treści w systemie Android Honeycomb (3.x). Stworzyłem dostosowane menu akcji do wycinania, kopiowania i wklejania. Jak mogę skopiować zaznaczony tekst w widoku Web przy użyciu mojego dostosowanego menu akcji.Wybór tekstu Androida w widoku Web

+0

to może być pomocne ... http://stackoverflow.com/questions/1111844/selecting-text-in-a-webview – Ronnie

+2

Czy odpowiedź pomóc Ci? Następnie zaakceptuj to. Jeśli nie, proszę wyjaśnij, co jeszcze nie działa. –

Odpowiedz

8

Może to pomoże ...

public void selectAndCopyText() { 
try { 
    Method m = WebView.class.getMethod("emulateShiftHeld", null); 
    m.invoke(this, null); 
} catch (Exception e) { 
    e.printStackTrace(); 
    // fallback 
    KeyEvent shiftPressEvent = new KeyEvent(0,0, 
     KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_SHIFT_LEFT,0,0); 
    shiftPressEvent.dispatch(this); 
} 

}

dostał od https://stackoverflow.com/a/1113204/638987

+0

Działa na systemie Android 3.2! Niektóre inne odpowiedzi sugerują parametr boolean w emulateShiftHeld --- to nie jest poprawne! Użyj "null" jak w powyższym kodzie i będzie działać dla Ciebie! –

+0

Under Anroid 4.0.3 m.invoke (webView, null) powoduje awarię natywną '09-21 23: 20: 49.151: A/libc (4103): Fatal signal 11 (SIGSEGV) at 0x00000014 (code = 1)'. –

-2

Spróbuj poniżej kodu ...

private void emulateShiftHeld(WebView view) 
{ 
    try 
    { 
     KeyEvent shiftPressEvent = new KeyEvent(0, 0, KeyEvent.ACTION_DOWN, 
               KeyEvent.KEYCODE_SHIFT_LEFT, 0, 0); 
     shiftPressEvent.dispatch(view); 
     Toast.makeText(this, "select_text_now", Toast.LENGTH_SHORT).show(); 
    } 
    catch (Exception e) 
    { 
     Log.e("dd", "Exception in emulateShiftHeld()", e); 
    } 
} 

i Call powyżej metody tam, gdzie chcesz ...

emulateShiftHeld(mWebView); 

Więcej szczegółów można znaleźć w tym ... Android: how to select texts from webview

+0

To jest kod dla Androida 2.2. Surej opublikował kod, który działa zarówno na Androida 2.2 i 3.2, ale nadal jest to problem dla Androida 4. * (Ice Cream Sandwich). Powyższy kod po prostu nie robi nic w Ice Cream Sandwich. –

Powiązane problemy