2009-07-10 3 views
6

Браузер делает это, вызывая метод public void emulateShiftHeld() в WebView, который скрыт в SDK.
Любые другие варианты?Выбор текста в WebView?

+0

эй у вас есть решение проблемы? – vnshetty

+0

Это решение не работает на ICS –

ответ

8

Из класса, который простирается 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); 
    } 
} 

И тогда вы должны использовать ClipboardManager следить за новым текстом.

Работы на Android 1.5 - 2.3. emulateShiftHeld() опубликовано с 2.2.

+0

Пока пользователь «сотрудничает» ** вручную **, выбирая текст. См. Http://stackoverflow.com/questions/5250290/why-doesnt-this-motionevent-simulation-work –

+0

Под Anroid 4.0.3 m.invoke (webView, null) вызывает родной сбой 09-21 23: 20: 49.151: A/libc (4103): Фатальный сигнал 11 (SIGSEGV) при 0x00000014 (код = 1) –

+0

Извините, я этого не понимаю .. Я добавил selectAndCopyText() в свой класс, который расширяет WebView, но где я могу это назвать функция, позволяющая выбирать текст в WebView? – Bruce

3

Этот кусок кода выполняет то же самое, что и emulateshiftheld(). Он позволяет пользователю выбирать текст. Затем автоматически копирует его в буфер обмена.

 KeyEvent shiftPressEvent = new KeyEvent(0,0, 
       KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_SHIFT_LEFT,0,0); 
      shiftPressEvent.dispatch(portal); 
Смежные вопросы