2012-05-04 19 views
27

Estoy usando webview para mostrar contenido en Android Honeycomb (3.x). Creé un menú de acción personalizado para cortar, copiar y pegar. ¿Cómo puedo copiar el texto seleccionado en Webview utilizando mi menú de acción personalizado?Selección de texto de Android en Webview

+0

esto podría ser de ayuda ... http://stackoverflow.com/questions/1111844/selecting-text-in-a-webview – Ronnie

+2

Did la respuesta ¿ayudarte? Entonces por favor acéptalo. Si no, explique qué no funciona aún. –

Respuesta

8

Que Ayudará ...

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

}

ya ha recibido https://stackoverflow.com/a/1113204/638987

+0

¡Funciona en Android 3.2! Algunas otras respuestas sugirieron un parámetro booleano en emulateShiftHeld --- ¡no es correcto! ¡Use "nulo" como en el código anterior y le servirá! –

+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)'. –

-2

Trate a continuación el código ...

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

y llamado método anterior donde quieras ...

emulateShiftHeld(mWebView); 

para más detalles ver esto ... Android: how to select texts from webview

+0

Este es el código para Android 2.2. Código publicado Surej que funciona tanto para Android 2.2 y 3.2, pero este sigue siendo un problema para Android 4. * (Ice Cream Sandwich). El código anterior simplemente no hace nada en Ice Cream Sandwich. –