Lastpass如何管理这个?!
AccessibilityNodeInfo有一个setText()方法,但我觉得这是一个红色的鲱鱼,因为文档状态,
注意:无法从AccessibilityService调用。在传递给AccessibilityService之前,此类是不可变的。
另一位用户不久前问了一个类似的问题,但最近对LastPass的更新证明确实有可能。
答案 0 :(得分:4)
我已经弄明白了,并在我的应用程序TapN中实现了它。
首先获取原始剪贴板内容,保存,将内容复制到剪贴板,然后粘贴,然后复制原始内容。
public void inputData(Context c, String data, AccessibilityNodeInfo source) {
try {
String lastClip = clipboard.getPrimaryClip().getItemAt(0).coerceToText(c)
.toString();
} catch (Exception e) {
lastClip = "";
}
Log.d("THE NODE INFO", source.toString());
ClipData clip = ClipData.newPlainText("nfc_input", data);
clipboard.setPrimaryClip(clip);
Log.d("SENDING DATA", Boolean.toString(source.refresh()));
Log.d("SENDING DATA", Boolean.toString(source
.performAction(AccessibilityNodeInfo.ACTION_PASTE)));
ClipData clip = ClipData.newPlainText("nfc_input", lastClip);
clipboard.setPrimaryClip(clip);
}
答案 1 :(得分:1)
我发现了一些比ACTION_PASTE更好的解决方案。我觉得ACTION_PASTE延迟并且无法正常工作。 ACTION_SET_TEXT适用于我,请与您联系。
public void pasteText(AccessibilityNodeInfo node, String text) {
Bundle arguments = new Bundle();
arguments.putString(AccessibilityNodeInfoCompat.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, text);
node.performAction(AccessibilityNodeInfoCompat.ACTION_SET_TEXT, arguments);
}