2009-07-10 23 views
6

Trình duyệt thực hiện điều này bằng cách gọi phương thức public void emulateShiftHeld() trên WebView bị ẩn trong SDK.
Bất kỳ tùy chọn nào khác?Chọn văn bản trong một WebView?

+0

bạn có giải pháp cho vấn đề của mình không? – vnshetty

+0

giải pháp này không hoạt động trên ICS –

Trả lời

8

Từ lớp mà kéo dài 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); 
    } 
} 

Và sau đó bạn phải sử dụng ClipboardManager để xem cho văn bản mới.

Hoạt động trên Android 1.5 - 2.3. emulateShiftHeld() được công khai kể từ 2.2.

+0

Miễn là người dùng "hợp tác" theo ** thủ công ** chọn văn bản. Xem http://stackoverflow.com/questions/5250290/why-doesnt-this-motionevent-simulation-work –

+0

Dưới Anroid 4.0.3 m.invoke (webView, null) gây ra sự cố nguyên bản từ 09-21 23: 20: 49.151: A/libc (4103): Fatal tín hiệu 11 (SIGSEGV) tại 0x00000014 (code = 1) –

+0

Xin lỗi tôi không nhận được điều này .. Tôi đã thêm selectAndCopyText() trong lớp học của tôi mở rộng WebView, nhưng nơi nào tôi gọi này chức năng để cho phép văn bản trong WebView có thể chọn được? – Bruce

3

Đoạn mã này thực hiện chính xác điều tương tự như emulateshiftheld(). Nó cho phép người dùng chọn văn bản. Sau đó tự động sao chép nó vào clipboard.

 KeyEvent shiftPressEvent = new KeyEvent(0,0, 
       KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_SHIFT_LEFT,0,0); 
      shiftPressEvent.dispatch(portal); 
Các vấn đề liên quan