Java 从(辅助功能)服务填写任何应用程序的编辑文本?

Java 从(辅助功能)服务填写任何应用程序的编辑文本?,java,android,accessibility,lastpass,Java,Android,Accessibility,Lastpass,Lastpass是如何管理的 AccessibilityNodeInfo有一个setText()方法,但我觉得这是一个危险的文件状态 注意:无法从AccessibilityService调用。此类在交付给AccessibilityService之前是不可变的 不久前,另一位用户问了一个类似的问题,但最近对LastPass的更新证明这确实是可能的 我已经解决了这个问题,并在我的应用程序TapN中实现了它 首先获取原始剪贴板内容,保存该内容,将内容复制到剪贴板,然后粘贴,然后将原始内容复制回剪贴板

Lastpass是如何管理的

AccessibilityNodeInfo有一个setText()方法,但我觉得这是一个危险的文件状态

注意:无法从AccessibilityService调用。此类在交付给AccessibilityService之前是不可变的

不久前,另一位用户问了一个类似的问题,但最近对LastPass的更新证明这确实是可能的


我已经解决了这个问题,并在我的应用程序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);
}

我找到了更好的解决办法,而不是采取行动。我觉得ACTION_PASTE造成延迟,无法正常工作。动作设置文本对我来说很好,请与您联系

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);
    }

他们可能正在使用ACTION_PASTE,ClipboardManager.API文档称ACTION_PASTE需要API级别18。对于API级别14,我们如何才能做到同样的效果?对于低于android 18的用户,使用AccessibilityNodeInfoCompat.ACTION_粘贴看起来是一个更好的解决方案,因为它也不会将内容暴露给剪贴板管理器。