2013-03-21 21 views
7

Tôi đang phát triển Dịch vụ trợ năng của Android. Tôi đã nhận được AccessibilityNodeInfo đại diện cho EditText. Có khả năng chỉnh sửa văn bản được chứa không?Đặt văn bản trong AccessibilityNodeInfo

Tôi đã thử với mynode.setText("aaa") nhưng tôi nhận được IllegalStateException như mô tả trong tài liệu chính thức http://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.html

Bất kỳ ý tưởng? Cảm ơn

+0

Không, nó không phải là có thể thiết lập các nội dung của một EditText từ một AccessibilityService sử dụng AccessibilityNodeInfo. Các nút trợ năng chỉ có nghĩa là để đọc thông tin và thực hiện một bộ hành động nhỏ (xem AccessibilityNodeInfo.performAction). Tuy nhiên, bạn có thể thực hiện thông qua IME. – alanv

+0

@alanv, bạn sẽ làm như thế nào? – r2DoesInc

+2

Thực ra, có vẻ như tôi đã sai. Kể từ API 18, bạn có thể sử dụng ACTION_PASTE để chèn văn bản từ ClipboardManager. Kết hợp với các hành động chọn văn bản, bạn có thể hiệu chỉnh một phần văn bản một cách hiệu quả; tuy nhiên, API đã không thực sự dành cho điều đó và nó có thể không hoạt động tốt. – alanv

Trả lời

12

Bạn có thể sử dụng ACTION_SET_TEXT cho> = android 21. Dưới đây là ví dụ của nó:

AccessibilityNodeInfo source = event.getSource(); 
if (source != null & event.getClassName().equals("android.widget.EditText")) { 
    Bundle arguments = new Bundle(); 
    arguments.putCharSequence(AccessibilityNodeInfo 
      .ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, "android"); 
    source.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, arguments); 
} 
+0

Cảm ơn bạn rất nhiều. Đã lưu ngày của tôi – XylemRaj

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