我正在尝试使用 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从无障碍服务内部清除文本。
我觉得好像我错过了什么,因为这应该是一项简单的任务。请告诉我如何做到这一点。
我不得不使用某种黑客。基本上,它选择 中的文本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)