Android 无障碍服务 - 清除 EditText

rah*_*les 2 android

我正在尝试使用 android 的AccessibilityService. 目前,我正在做类似的事情:

textnode.performAction(AccessibilityNodeInfo.ACTION_FOCUS);
ClipData clip = ClipData.newPlainText("label", "DATA" );
clipboard.setPrimaryClip(clip);
textnode.performAction(AccessibilityNodeInfo.ACTION_PASTE);
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果 中存在一些文本EditText,则将新文本附加到其中,而我想要替换它。我找不到任何方法EditText从无障碍服务内部清除文本。

我觉得好像我错过了什么,因为这应该是一项简单的任务。请告诉我如何做到这一点。

rah*_*les 5

我不得不使用某种黑客。基本上,它选择 中的文本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);
Run Code Online (Sandbox Code Playgroud)