• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Accessibility辅助功能--一念天堂,一念地狱,一念天堂一念地狱

Accessibility辅助功能--一念天堂,一念地狱,一念天堂一念地狱

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了一念天堂一念地狱,一念天堂一念地狱出处,一念天堂一念地狱小说,生如夏花一念地狱天堂,一念天堂一念地狱梵文等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Accessibility辅助功能--一念天堂,一念地狱,一念天堂一念地狱


0x00什么是Accessibility(辅助功能)

考虑到部分用户不能很好地使用Android设备,比如由于视力、身体、年龄方面的限制,造成阅读内容、触控操作、声音信息等方面的获取困难,Android提供了Accessibility特性和服务帮助用户更好地使用Android设备。

依据Android官方的详细介绍,开发者在增加视图属性如contentDescription等内容后,可以在不修改原有代码逻辑的情况下使用户体验得到优化,如预装在Android 设备上的屏幕阅读器TalkBack,在没有修改系统源码的情况下,满足了视力不足的用户使用Android设备的需求,TalkBack会使用语音反馈描述用户所执行的操作,以及告知用户收到的提醒和通知,可以帮助视力水平较低的用户顺利进行手机的触控、阅读内容的进行。

0x01如何使用Accessibility(辅助功能)

在项目中应用AccessibilityService的三个步骤:

①继承AccessibilibityService,实现onAccessibilityEvent()和onInterrupt()方法。

 

 

 在onAccessibilityEvent()方法中,我们可以接收所监听的事件。

②新建配置文件

在res目录下新建xml文件夹,新建accessibility.xml文件,如下所示:

 

 

 

字段名

字段说明

android:packageNames

指明了自己的辅助服务关心哪些应用发出的事件,多个应用包名之间用逗号分隔,如果不填,则关注手机上所有应用发出的事件。例如我们现在要利用辅助点击做app的自动安装功能,那么只需要关注 com.android.packageinstaller这个包发出的事件。如果只关注微信发出的事件,则这里填com.tencent.mm。

android:accessibilityEventTypes

辅助服务关注的事件类型,例如TYPE_VIEW_FOCUSED,TYPE_WINDOW_STATE_CHANGED,TYPE_NOTIFICATION_STATE_CHANGED等等。如果只关心微信的通知栏,那么这个属性可以设置为TYPE_NOTIFICATION_STATE_CHANGED。

android:accessibilityFlags

辅助服务额外的flag信息。例如FLAG_REPORT_VIEW_IDS可以使回调的事件带上view的ID。

android:accessibilityFeedbackType

事件的反馈类型,例如声音反馈、触觉反馈、视觉反馈等。

android:notificationTimeout

两个同样类型的辅助事件发给辅助服务的最小时间间隔

android:canRetrieveWindowContent

是否可以获取窗口内容

 

③在AndroidMainifest中注册:

 

 

该service需要权限android.permission.BIND_ACCESSIBILITY_SERVICE和action:android.accessibilityservice.AccessibilityService,使用名为android.accessibilityservice的meta-data指定配置文件。

 

重要参数及方法:

①AccessibilityEvent:

TYPE_NOTIFICATION_STATE_CHANGED:通知栏状态变化

TYPE_VIEW_CLICKED:视图被点击

TYPE_WINDOW_CONTENT_CHANGED:窗口内容变化

TYPE_WINDOW_STATE_CHANGED:窗口状态变化

....

②AccessibilityService:

onServiceConnected() :可选。系统会在成功连接上你的服务的时候调用这个方法,在这个方法里你可以做一下初始化工作,例如设备的声音震动管理,也可以调用setServiceInfo()进行配置AccessibilityServiceInfo。

onAccessibilityEvent() :必须。通过这个函数可以接收系统发送来的AccessibilityEvent,接收来的AccessibilityEvent是经过过滤的,过滤是在配置工作时设置的。

onInterrupt() :必须。这个在系统想要中断AccessibilityService返给的响应时会调用。在整个生命周期里会被调用多次。

onUnbind() :可选。在系统将要关闭这个AccessibilityService会被调用。在这个方法中进行一些释放资源的工作。

getRootInActiveWindow():获取当前活动窗口中的根节点。

performGlobalAction():执行全局动作,例如返回等操作。

...

③AccessibilityNodeInfo:

getParent():获取父节点。

getChild():获取子节点。

performAction():在节点上执行一个动作。

findAccessibilityNodeInfosByText():通过字符串查找节点元素。

findAccessibilityNodeInfosByViewId():通过视图id查找节点元素。

...

 

0x02 Accessibility(辅助功能)应用实例

AccessibilityService一般应用步骤

①分析操作的流程,拆解成单步可实现的过程;

②通过UIAutomator和adb shell dumpsys来查看对应的UI控件ID、文本或者是具体的Activity;

③通过逻辑组合进行代码编写;

④调试、兼容性处理。

 

实例1.免root自动安装

 

 

实例2.微信自动抢红包(仅供技术交流)

①流程拆分(通知栏触发)

 

 

第一步:当通知栏变化时,检测是否包含“[微信红包]”关键字,若包含,则触发这个通知消息包含的intent。

第二步:跳转到聊天页面(com.tencent.mm.ui.LauncherUI),根据关键字“领取红包”占到对应的view,模拟点击触发ACTION_CLICK点击事件。

第三步:跳转到开红包界面(com.tencent.mm.plugin.luckymoney.ui.LuckyMoneyReceiveUI),根据开红包按钮的id:com.tencent.mm:id/bg7模拟点击触发ACTION_CLICK点击事件。

第四步:进入红包详情页面(com.tencent.mm.plugin.luckymoney.ui.LuckyMoneyDetailUI),

根据返回键的id:com.tencent.mm:id/gd模拟点击触发ACTION_CLICK点击事件。

 

②微信UI结构

涉及微信界面的类:

l 微信主界面或聊天界面 -- com.tencent.mm.ui.LauncherUI

l 开红包界-- com.tencent.mm.plugin.luckymoney.ui.LuckyMoneyReceiveUI

l 红包详情 -- com.tencent.mm.plugin.luckymoney.ui.LuckyMoneyDetailUI

相关控件ID:

l “开”按钮:com.tencent.mm:id/bg7

l 红包详情页返回按钮:com.tencent.mm:id/gd

 

 

③具体代码实现:

(1)重写MyAccessibilityService中的onAccessibilityEvent方法,监听通知栏消息,判断消息中是否“[微信红包]”,若包含,则跳转到对应的聊天界面。

 

(2)onAccessibilityEvent方法中的第二个case,监听com.tencent.mm.ui.LauncherUI,com.tencent.mm.plugin.luckymoney.ui.LuckyMoneyReceiveUI,com.tencent.mm.plugin.luckymoney.ui.LuckyMoneyDetailUI三个界面,分别进行点击最近收到的红包,拆红包,推出红包详情页面的操作。

 

(3)遍历所有节点,获取最近收到的红包,进行模拟点击。

 

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Accessibility辅助功能--一念天堂,一念地狱,一念天堂一念地狱

相关文章

  • 2017-05-26AsyncTask.cancel()的结束问题,asynctaskcancel
  • 2017-05-26Android中SimpleAdapter的使用—自定义列表,自定义simpleadapter
  • 2017-05-26android中使用图文并茂的按钮,android图文并茂
  • 2017-05-26moveTaskToback退后台的用法及作用,movetasktoback后台
  • 2017-05-26《Android Studio实用指南》12.18 文本搜索工具
  • 2017-05-26RecyclerView的五大开源项目-解决办法
  • 2017-05-26Android之SharedPreferences数据存储,sharedpreferences
  • 2017-05-26onInterceptTouchEvent与onTouchEvent默认返回值,ontouchevent返回值
  • 2017-05-26zoom动画,实现图片点击预览效果,zoom预览
  • 2017-05-26Android 事件分发

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 安卓图片加载之使用universalimageloader加载圆形圆角图片
    • 大神都是有个起点的,大神都是起点
    • Android Facebook和Twitter分享
    • 微博API常用方法,博API常用方法
    • Play 2D games on Nexus 6P running Android N7.1.1 with Daydream View VR headset,n7.1.1headset
    • 我的android学习经历16,android学习经历16
    • Android Git 客户端,androidgit客户端
    • Android Studio SugarORM No Such Table,androidsugarorm
    • Android 开源库和项目 3,android开源库项目
    • Android捕获崩溃异常,Android捕获崩溃

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有