2009-07-10 11 views
6

El navegador hace esto llamando al método public void emulateShiftHeld() en WebView que está oculto en el SDK.
¿Alguna otra opción?¿Seleccionar texto en una vista Web?

+0

hey usted tiene la solución a su problema? – vnshetty

+0

esta solución no funciona en ICS –

Respuesta

8

De la clase que se extiende WebView:

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); 
    } 
} 

Y entonces usted tiene que utilizar ClipboardManager para vigilar nuevo texto.

Funciona en Android 1.5 - 2.3. emulateShiftHeld() hecho público desde 2.2.

+0

Siempre y cuando el usuario "coopere" ** seleccionando manualmente el texto. Consulte http://stackoverflow.com/questions/5250290/why-doesnt-this-motionevent-simulation-work –

+0

Bajo Anroid 4.0.3 m.invoke (webView, null) causa bloqueo nativo 09-21 23: 20: 49.151: A/libc (4103): señal fatal 11 (SIGSEGV) en 0x00000014 (código = 1) –

+0

Lo siento, no entiendo esto ... He agregado selectAndCopyText() en mi clase que amplía WebView, pero ¿a dónde llamo esto? función para permitir que el texto en WebView sea seleccionable? – Bruce

3

Este trozo de código hace exactamente lo mismo que emulateshiftheld(). Le permite al usuario seleccionar texto. Luego, automáticamente lo copia al portapapeles.

 KeyEvent shiftPressEvent = new KeyEvent(0,0, 
       KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_SHIFT_LEFT,0,0); 
      shiftPressEvent.dispatch(portal); 
Cuestiones relacionadas