我正在尝试使用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);

07-26 04:04