我正在尝试使用android的AccessibilityService
在edittext中插入文本。
目前,我正在做如下工作:
textnode.performAction(AccessibilityNodeInfo.ACTION_FOCUS);
ClipData clip = ClipData.newPlainText("label", "DATA" );
clipboard.setPrimaryClip(clip);
textnode.performAction(AccessibilityNodeInfo.ACTION_PASTE);
我的问题是,如果
EditText
中存在某些文本,则会将新文本附加到其中,而我希望将其替换。我找不到任何方法从辅助功能服务内部清除EditText
中的文本。我觉得好像我错过了什么,因为这应该是一个简单的任务。
请告诉我如何做到这一点。
最佳答案
我不得不用某种方法。
基本上,它选择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);