Android无障碍主动调用onAccessibilityEvent( )方法的方法

在论坛看到以下方法,还没试验,先发到这里收藏一下以免以后找不到,不行再删掉吧:

https://bbs.youkuaiyun.com/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对象保存,直接拿来用就行了,我真蠢

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值