2023年6月27日发(作者:)
AccessibilityService实现⾃滚动指定条⽬实现点击效果AccessibilityService 实现⾃滚动指定条⽬实现点击效果⾸先AccessiblityService 作为在Android Setting设置中的⼀个辅助服务,在后台运⾏并接收系统AccessibilityEvents事件的回调,它开启后能够实现⼿机窗⼝状态和事件的监听,包含各种点击 、触摸和内容的变化切换等。这⾥只是实现Setting中开发者选项的⾃滚动到布局边界实现⾃点击效果1. 配置清单⽂件
页⾯变化回调事件 * @param event ntType()
当前事件的类型; * ssName()
当前类的名称; * rce()
当前页⾯中的节点信息; * kageName()
事件源所在的包名 */ @Override public void onAccessibilityEvent(AccessibilityEvent event) { AccessibilityNodeInfo rootInActiveWindow = getRootInActiveWindow(); //获取当前展⽰的窗⼝ if (rootInActiveWindow!=null){//查找⾃滚动到开发⼈员选项中的显⽰布局边界点击开关 //开发⼈员选项 List
/** *
滑动直到控件显⽰后,触发点击事件 * * @param text
查找的控件显⽰的内容 * @param listId
滚动的容器id */ public void scrollDeveloperCllick(String text, String listId, AccessibilityNodeInfo rootInActiveWindow) { if (rootInActiveWindow != null) { List
查找容器元素;判断关键字查找出的元素是否在该容器元素中; if (item == null || () == 0) { //
关键字元素不存在,则滚动容器元素 LogUtils.D(TAG, "不存在 " + text); if (list != null && () > 0) { LogUtils.D(TAG, "---- [ " + text + " ] 滚动查找中 ----" + ()); AccessibilityNodeInfo parent = (0).getParent().getParent(); if (parent!=null){ LogUtils.D(TAG, "---- 滚动 ----" + (0).getParent().getParent().isScrollable()); for (int i = 0; i < (); i++) { if (mAction(_SCROLL_FORWARD)) { scrollDeveloperCllick(getString(_show_layout), "android:id/switch_widget",rootInActiveWindow); isOpen=true; } return; } } } } else { LogUtils.D(TAG, "ACTION_CLICK text1=" +",item="+()); if (list!=null){ for (int i = 0; i < (); i++) { String s = (i).getParent().getChild(0).getText().toString(); LogUtils.D(TAG, "ACTION_CLICK text1=" +s!=null?s:null); if (!y(s) && (text)&&isOpen){ (i) .performAction(_CLICK); isOpen=false; break; } } } } } }}4. AccessibilityService⾥⼏个重要的⽅法:onServiceConnected() -可选。系统会在成功连接上你的服务的时候调⽤这个⽅法,在这个⽅法⾥你可以做⼀下初始化⼯作,例如设备的声⾳震动管理,也可以调⽤setServiceInfo()进⾏配置AccessibilityServiceInfo。onAccessibilityEvent() -必须。通过这个函数可以接收系统发送来的AccessibilityEvent,接收来的AccessibilityEvent是经过过滤的,过滤是在配置⼯作时设置的。onInterrupt() -必须。这个在系统想要中断AccessibilityService返给的响应时会调⽤。在整个⽣命周期⾥会被调⽤多次。 onUnbind() -可选。在系统将要关闭这个AccessibilityService会被调⽤。在这个⽅法中进⾏⼀些释放资源的⼯作。
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1687841689a49962.html
评论列表(0条)