2012-05-04 46 views
27

Tôi đang sử dụng chế độ xem web để hiển thị nội dung trong Android Honeycomb (3.x). Tôi đã tạo menu hành động được tùy chỉnh để cắt, sao chép và dán.Làm cách nào tôi có thể sao chép văn bản đã chọn trong Webview bằng cách sử dụng trình đơn tác vụ tùy chỉnh của tôi.Lựa chọn văn bản Android Trong chế độ xem web

+0

này có thể được giúp đỡ ... http://stackoverflow.com/questions/1111844/selecting-text-in-a-webview – Ronnie

+2

Có phải câu trả lời giúp bạn? Sau đó, hãy chấp nhận nó. Nếu không, xin vui lòng giải thích những gì không hoạt động được nêu ra. –

Trả lời

8

Có thể nó sẽ giúp ...

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

}

Got từ https://stackoverflow.com/a/1113204/638987

+0

Nó hoạt động trên Android 3.2! Một số câu trả lời khác đề xuất tham số boolean trong emulateShiftHeld --- nó không chính xác! Sử dụng "null" như trong mã ở trên và nó sẽ làm việc cho bạn! –

+0

Dưới Anroid 4.0.3 m.invoke (webView, null) gây ra tai nạn gốc '09-21 23: 20: 49.151: A/libc (4103): Tín hiệu tử vong 11 (SIGSEGV) tại 0x00000014 (mã = 1) '. –

-2

Hãy thử bên dưới mã ...

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

và Gọi phương pháp nêu trên bất cứ nơi nào bạn muốn ...

emulateShiftHeld(mWebView); 

để biết thêm chi tiết, xem này ... Android: how to select texts from webview

+0

Đây là mã dành cho Android 2.2. Surej xuất bản mã mà làm việc cho cả Android 2.2 & 3.2, nhưng đây vẫn là vấn đề cho Android 4. * (Ice Cream Sandwich). Đoạn mã trên không làm gì dưới Ice Cream Sandwich. –

Các vấn đề liên quan