在论坛看到以下方法,还没试验,先发到这里收藏一下以免以后找不到,不行再删掉吧:
https://bbs.csdn.net/topics/395825596?page=1
如何主动发起调用onAccessibilityEvent
在使用AccessibilityService时,屏幕变化触发事件onAccessibilityEvent从而得到屏幕中的结构event.getSource()或者event.getRootInActiveWindow()
那么这个事件该如何主动触发呢?例如我在另外一个类中,在屏幕无任何变化的静止状态下,主动触发onAccessibilityEvent从而得到event.getRootInActiveWindow()的界面结构,是否是通过反射的方式?但我在网上找的一段代码,如下:
Constructor constructor = AccessibilityEvent.class.getDeclaredConstructor();
constructor.setAccessible(true);
AccessibilityEvent accessibilityEvent = constructor.newInstance();
accessibilityEvent.setEventType(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
accessibilityEvent.setClassName(className);
我自己在模拟器上经过测试代码都正常,但是如果放到真机上(华为V20)测试,第一句就报了
java.lang.NoSuchMethodException: android.view.accessibility.AccessibilityEvent. []
这样的错误,无法找到该方法,我查了一些资料,说是Android9.0对非 SDK 接口的限制,也就是说9.0以后安卓就无法使用针对AccessibilityEvent的反射了?那么我该如何主动创建AccessibilityEvent发起调用呢??
其实项目需求只是想随时都可以获取到event.getSource()或event.getRootInActiveWindow()这样的屏幕结构,请问该怎么做呢
214点赞收藏5
分享
写回复
5 条回复
cnwjl 5月前
我刚在其它论坛发贴问这个呢,哈哈,这里有答案
点赞
qq23001186 8月前
可以主动触发了吗?
点赞
gaoranaa 1年前
来个人呀来个人呀
点赞
gaoranaa 1年前
分数结给下一楼,要的赶紧回复
点赞
gaoranaa 1年前
自己解决了,其实只要把AccessibilityService对象保存,直接拿来用就行了,我真蠢