栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

AccessibilityService 实现自滚动指定条目实现点击效果

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

AccessibilityService 实现自滚动指定条目实现点击效果

    在res/xml/accessbility_service_config.xml 中配置AccessibilityServices 属性配置

android:accessibilityEventTypes:这个属性设置服务只接收的事件类型。

android:packageNames能够配置只监听的包名,不配置则是全部监听

Android官方API属性配置

android:accessibilityEventTypes=“typeWindowStateChanged|typeNotificationStateChanged|typeViewClicked|typeAllMask”

android:accessibilityFeedbackType=“feedbackGeneric”

android:accessibilityFlags=“flagReportViewIds|flagRetrieveInteractiveWindows”

android:canRetrieveWindowContent=“true”

android:canRequestFilterKeyEvents=“true”

android:description="@string/accessibility_name"

android:notificationTimeout=“100”

android:canPerformGestures=“true”

/>

事件类型(EventType):

#TYPES_ALL_MASK:所有类型

#TYPE_VIEW_CLICKED :单击

#TYPE_VIEW_LONG_CLICKED :长按

#TYPE_VIEW_SELECTED :选中

#TYPE_VIEW_FOCUSED :获取焦点

#TYPE_VIEW_TEXT_CHANGED :文字改变

#TYPE_WINDOW_STATE_CHANGED :窗口状态改变

#TYPE_NOTIFICATION_STATE_CHANGED :通知状态改变

#TYPE_VIEW_HOVER_ENTER

#TYPE_VIEW_HOVER_EXIT

#TYPE_TOUCH_EXPLORATION_GESTURE_START

#TYPE_TOUCH_EXPLORATION_GESTURE_END

#TYPE_WINDOW_CONTENT_CHANGED

#TYPE_VIEW_SCROLLED

#TYPE_VIEW_TEXT_SELECTION_CHANGED

#TYPE_ANNOUNCEMENT

#TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY

#TYPE_GESTURE_DETECTION_START

#TYPE_GESTURE_DETECTION_END

#TYPE_TOUCH_INTERACTION_START

#TYPE_TOUCH_INTERACTION_END

#TYPE_WINDOWS_CHANGED

    继承AccessibilityService并实现其中的抽象方法。

public class AccessibilityPermissionServices extends AccessibilityService {

private static final String TAG = AccessibilityPermissionServices.class.getSimpleName();

private boolean isOpen=false;//防止开启后多次点击

@Override

public void onAccessibilityEvent(AccessibilityEvent event) {

AccessibilityNodeInfo rootInActiveWindow = getRootInActiveWindow(); //获取当前展示的窗口

if (rootInActiveWindow!=null){//查找自滚动到开发人员选项中的显示布局边界点击开关

//开发人员选项

List devInfos =rootInActiveWindow

.findAccessibilityNodeInfosByText(getString(R.string.str_developers_debug));

if (devInfos!=null &&devInfos.size()>0 ){

//显示布局边界

scrollDeveloperCllick(getString(R.string.str_show_layout), “android:id/switch_widget”,rootInActiveWindow);

}

}

}

public void scrollDevelope
rCllick(String text, String listId, AccessibilityNodeInfo rootInActiveWindow) {

if (rootInActiveWindow != null) {

List item = rootInActiveWindow.findAccessibilityNodeInfosByText(text); //根据关键字查找某控件元素

List list = rootInActiveWindow.findAccessibilityNodeInfosByViewId(listId); //根据resource id 查找容器元素;判断关键字查找出的元素是否在该容器元素中;

if (item == null || item.size() == 0) { // 关键字元素不存在,则滚动容器元素

LogUtils.D(TAG, "不存在 " + text);

if (list != null && list.size() > 0) {

tId); //根据resource id 查找容器元素;判断关键字查找出的元素是否在该容器元素中;

if (item == null || item.size() == 0) { // 关键字元素不存在,则滚动容器元素

LogUtils.D(TAG, "不存在 " + text);

if (list != null && list.size() > 0) {

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/709560.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号