Java AccessibilityService剪贴板复制事件

Java AccessibilityService剪贴板复制事件,java,android,accessibilityservice,Java,Android,Accessibilityservice,我正在尝试使AccessibilityService获得有关剪贴板复制事件的通知 到目前为止,我一直在努力解决这个问题,所以在弹出窗口中单击“复制”按钮后会通知服务,但在这种情况下不会抛出任何事件,我检查了所有基本事件(文本选择、类型视图单击等) 是否有可能实现此目标?辅助功能服务不接收此事件。您可以做的是在一些辅助功能事件子集之后检查剪贴板的内容 @Override public void onAccessibilityEvent(AccessibilityEvent e) { sw

我正在尝试使AccessibilityService获得有关剪贴板复制事件的通知

到目前为止,我一直在努力解决这个问题,所以在弹出窗口中单击“复制”按钮后会通知服务,但在这种情况下不会抛出任何事件,我检查了所有基本事件(文本选择、类型视图单击等)


是否有可能实现此目标?

辅助功能服务不接收此事件。您可以做的是在一些辅助功能事件子集之后检查剪贴板的内容

@Override
public void onAccessibilityEvent(AccessibilityEvent e) {

    switch (e.getEventType()) {
        //This event alone may be enough!
        case AccessibilityEvent.TYPE_VIEW_TEXT_SELECTION_CHANGED:

        // If not fall through for these events as well, which would detect things like a "Copy" button activated.
        case AccessibilityEvent.TYPE_VIEW_CLICKED:
        case AccessibilityEvent.TYPE_VIEW_CONTEXT_CLICKED:
            checkContentsOfClipboard();

    }
}

许多应用程序,如pdf阅读器、chrome,都实现了自己的文本容器,它们不会抛出选择更改事件,其他的也不会从我测试的内容中抛出。这就是为什么我建议也关注其他事件。下拉列表将检查所选内容是否已更改、是否已单击视图或是否已查看上下文单击事件。这应该是可能触发更改的事件的子集。您可以始终跟踪所有事件,并始终检查剪贴板更改。。。如果你的客户不关心电池寿命,如果你没有抓住这些事件,你在其他地方就有问题。这些事件被抛出的很好。除非有人使用硬件键盘“复制”,这与操作系统中的“复制”按钮完全不同,否则有人必须与操作系统中的“复制”按钮进行交互,这将触发一个查看事件。诀窍是正确地监听它。事实上,android studio模拟系统没有正确地抛出事件,在我自己的手机上本地测试后,结果证明它工作正常,谢谢!从Android 10开始,你甚至不能检查剪贴板的内容,不管你有多少个事件。你的应用程序必须聚焦才能进入剪贴板。