这是我的代码。在我的自定义AccessibilityService
中,我通过方法TextView
得到所有onAccessibilityEvent
。然后我想标记文字。
public void onAccessibilityEvent(AccessibilityEvent event) {
AccessibilityNodeInfo source = event.getSource();
if (source == null) {
return;
}
for (int i = 0; i < source.getChildCount(); i++) {
AccessibilityNodeInfo node = source.getChild(i);
if (TEXTVIEW.equals(node.getClassName())) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
Bundle arguments = new Bundle();
arguments.putCharSequence(AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE,
node.getText().toString()+1);//just want to mark
node.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, arguments);
}
}
}
}
答案 0 :(得分:0)
这段代码对我来说很好用!
public void onAccessibilityEvent(AccessibilityEvent e) {
if (e.getSource() == null) return;
if (e.getSource().getClassName().equals(EditText.class.getName())) {
Bundle arguments = new Bundle();
arguments.putCharSequence(AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE,
"android");
e.getSource().performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, arguments);
}
}
并愉快地放置文本&#34; android&#34;进入可编辑的文本容器! AH,现在,如果你想改变TextView的文本,现在,尝试这样做是违法的。 TextView的文本是只读属性。你无法编辑它。可访问性节点信息是呈现视图的可访问性服务表示。您无法要求应用程序更改TextView的文本。这具有很大的安全隐患。哦,所以你有一个服务告诉大家密码字段是用户名字段,反之亦然?这不方便吗?基本上,您只能编辑可编辑的视图文本。
话虽如此,当您提供反馈时,您可以告诉用户该文本是您想要告诉他们的内容。并不是说我会使用一种可以提供服务的无障碍服务&#34; kitten&#34;对于层次结构中的每个视图...但是,您的用例/您想要完成的内容尚不清楚。如果你要提出另一个问题,那么这就是我要完成的事情......&#34;而不是&#34;这是我尝试过的,为什么它不起作用?&#34;我很乐意帮忙。