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

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

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对象保存,直接拿来用就行了,我真蠢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值