我正在尝试使用android的AccessibilityService
在EditText中插入文本。
目前,我正在做类似的事情:
textnode.performAction(AccessibilityNodeInfo.ACTION_FOCUS);
ClipData clip = ClipData.newPlainText("label", "DATA" );
clipboard.setPrimaryClip(clip);
textnode.performAction(AccessibilityNodeInfo.ACTION_PASTE);
我的问题是,如果EditText
中存在一些文本,则会将新文本附加到其中,而我希望将其替换。我找不到任何方法来清除辅助功能服务中EditText
内的文字。
我觉得好像错过了什么,因为这应该是一件容易的事。 请告诉我如何做到这一点。
答案 0 :(得分:4)
我不得不使用某种黑客。
基本上,它选择EditText
中的文本并在其上粘贴新文本。
在我的情况下,我不得不替换一个单词,所以我只需要选择第一个单词
这是代码:
Bundle arguments = new Bundle();
arguments.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT,
AccessibilityNodeInfo.MOVEMENT_GRANULARITY_WORD);
arguments.putBoolean(AccessibilityNodeInfo.ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN,
true);
textnode.performAction(AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY,
arguments);
ClipData clip = ClipData.newPlainText("label", "NEWDATA");
clipboard.setPrimaryClip(clip);
usernode.performAction(AccessibilityNodeInfo.ACTION_PASTE);
答案 1 :(得分:0)
用这个,希望可以帮到你
Bundle arguments = new Bundle();
arguments.putCharSequence(
AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE,
"your info");
nodeInfo.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, arguments);
答案 2 :(得分:-1)
只需在EditText上调用setText并在执行粘贴之前传入一个空字符 - http://developer.android.com/reference/android/widget/EditText.html
EditText editText = (EditText)findViewById(R.id.edit_text);
editText.setText("", TextView.BufferType.EDITABLE);