android 7.0 辅助服务部分节点不能点击问题

在开发中遇到Android 7.0设备上辅助服务的节点无法点击的问题,与6.0系统表现不同。分析可能与系统版本有关,而非应用程序本身。文章介绍了Android 7.0引入的新API,允许非ROOT设备模拟手势和点击,为辅助服务提供更强大的功能。同时,分享了测试代码和对辅助服务未来发展的思考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网上介绍文章:

https://blog.youkuaiyun.com/qq_24641847/article/details/77683826?locationNum=3&fps=1

自己在写一个项目的时候,发现7.0 和 6.0 的有差别,同样的代码6.0 能点击但到了7.0就不能点击。

知乎看到了:

(1)这个问题不是android 7的问题,AccessibilityService 可监听 点击事件,但通过ontouch实现的点击事件,是获取不到的。

(2)微信包括淘宝,一些重要的点击功能 不想让AccessibilityService监听到,就通过ontouch实现了,避免一些人搞灰色应用。

(3)这时候还想获取的话,需要root再通过app_process即可实现点击,这个方式比较更稳定,如果实现了,扩展比较强。我刚好做完了,可用。

(4)AccessibilityService 个人觉得功能很有限,所以需要一些辅助手段来完善

应该不是2点导致,因为同样代码在同一个版本的APP在不同操作系统却效果不一样,可能是还是系统版本导致的吧。

然后我就找到上面链接文章,那个文章说明,7.0 android系统引入新的api:


boolean dispatchGesture (GestureDescription gesture, AccessibilityService.GestureResultCallback callback, Handler handler)

这个API就强大,可以在非ROOT实现模拟手势,那么就可以模拟点击,滑动。只能说66666。那么7.0 手机可以实现非ROOT实现远程控制,那么teamview ,向日葵应该会使用该技术吧,因为以前模拟点击都是需要ROOT,ROOT就会丢掉一批用户。

其实7.0之前非ROOT也可以通过辅助实现简单远程操作,只是会比较复杂一点,因为要把坐标转换辅助服务的结点进行点击,不过转换起来也不是很难,这个就跟界面开发点击事件转换成按钮时间是一样的逻辑。

我的测试代码:

Log.d(TAG, "printTree: bound:" + rect);
Point position = new Point(rect.left+10, rect.top + 10);
GestureDescription.Builder builder = new GestureDescription.Builder();
Path p = new Path();
p.moveTo(position.x, position.y);
builder.addStroke(new GestureDescription.StrokeDescription(p, 0L, 100L));
GestureDescription gesture = builder.build();
boolean isDispatched = dispatchGesture(gesture, new GestureResultCallback() {
    @Override
    public void onCompleted(GestureDescription gestureDescription) {
        super.onCompleted(gestureDescription);
        Log.d(TAG, "onCompleted: 完成..........");
    }

    @Override
    public void onCancelled(GestureDescription gestureDescription) {
        super.onCancelled(gestureDescription);
        Log.d(TAG, "onCompleted: 取消..........");
    }
}, null);

 android 辅助其实越来越强大,可以做很多有用功能,但不知道未来google会不会做限制。


http://www.xiaoyutang.net/wordpress/?p=70


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值