AccessbilityService实现第三方软件的点击
来源:互联网 发布:制作身份证软件下载 编辑:程序博客网 时间:2024/05/21 18:50
AccessibilityService
2.2016/8/11
1.自定义一个类继承AccessibilityService,重写onAccessibilityEvent()。监控事件状态。private static final String TAG = "MyAccessibility"; @SuppressLint("NewApi") @Override public void onAccessibilityEvent(AccessibilityEvent event) { // TODO Auto-generated method stub int eventType = event.getEventType(); String eventText = ""; Log.i(TAG, "==============Start===================="); switch (eventType) { case AccessibilityEvent.TYPE_VIEW_CLICKED: eventText = "TYPE_VIEW_CLICKED"; break; case AccessibilityEvent.TYPE_VIEW_LONG_CLICKED: eventText = "TYPE_VIEW_LONG_CLICKED"; break; case AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED: eventText = "TYPE_WINDOW_STATE_CHANGED"; break; case AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED: eventText = "TYPE_NOTIFICATION_STATE_CHANGED"; break;// case AccessibilityEvent.CONTENT_CHANGE_TYPE_SUBTREE:// eventText = "CONTENT_CHANGE_TYPE_SUBTREE";// break; } Log.i(TAG, eventText); Log.i(TAG, "=============END====================="); if(eventText =="TYPE_NOTIFICATION_STATE_CHANGED"){ performClick("权叔叔"); } if(eventText == "TYPE_WINDOW_STATE_CHANGED"){ } }2.在清单文件注册service信息
<service android:label="@string/app_name" android:name=".MyAccessibility" android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"> <intent-filter> <action android:name="android.accessibilityservice.AccessibilityService"/> </intent-filter> <meta-data android:name="android.accessibilityservice" android:resource="@xml/click_config"/></service>3.上面的xml/click_config文件,在res下新建一个XML文件。
android:packageNames:需要监控的包名,可以填多个,用,分开。
<?xml version="1.0" encoding="utf-8"?><accessibility-service xmlns:android="http://schemas.android.com/apk/res/android" android:description="@string/click_auto" android:accessibilityEventTypes="typeNotificationStateChanged|typeWindowStateChanged" android:packageNames="com.tencent.mm" android:accessibilityFeedbackType="feedbackGeneric" android:notificationTimeout="100" android:accessibilityFlags="" android:canRetrieveWindowContent="true"/>4.通过文本查找控件节点或资源ID,然后拿到节点执行 targetNode.performAction(AccessibilityNodeInfo.ACTION_CLICK);就可以实现点击了。
//执行点击private void performClick(String text) { Log.i("MyService","点击执行"); AccessibilityNodeInfo nodeInfo = this.getRootInActiveWindow(); AccessibilityNodeInfo targetNode = null; //通过名字获取 //targetNode = findNodeInfosByText(nodeInfo,"广告"); targetNode = findNodeInfosByText(nodeInfo,text); if (targetNode.isClickable()) { targetNode.performAction(AccessibilityNodeInfo.ACTION_CLICK); }}//通过文本查找public static AccessibilityNodeInfo findNodeInfosByText(AccessibilityNodeInfo nodeInfo, String text) { List<AccessibilityNodeInfo> list = nodeInfo.findAccessibilityNodeInfosByText(text); if(list == null || list.isEmpty()) { return null; } return list.get(0);}
0 0
- AccessbilityService实现第三方软件的点击
- 支持第三方下载软件下载的实现
- 第三方登陆的实现
- 记录几个常用的第三方软件
- yum第三方软件仓库的搭建
- java实现利用第三方软件(ffmpeg)+avs实现视频文件的转换以及添加水印
- 第三方软件安装
- 第三方软件简介
- 案例:如何不通过第三方软件实现蓝牙与手机的内存卡交互
- 如何实现让一个第三方软件的桌面启动图标消失
- 无需第三方软件实现Mac支持ntfs读写的最简单操作
- 无需第三方软件实现Mac支持ntfs读写的最简单操作
- VB中利用第三方控件实现软件在线升级
- 轻松实现Windows定时关机,何必麻烦第三方软件
- 第三方推送过来的消息,用户点击如何处理
- 第三方QQ账号登录的实现
- 实现android的 google第三方登陆!
- 实现android的 google第三方登陆
- TIM_OutputState,TIM_OutputNState的意思
- HDU 5831 Rikka with Parenthesis II (栈&思维)
- js拼接html字符串注意事项
- leetcode:字符串之Length of Last Word
- BMFont制作字体
- AccessbilityService实现第三方软件的点击
- Android内存泄露——全解析和处理办法
- linux apache https配置
- regexp_like字符串中的指定字符串或者字符,区分逗号
- [BZOJ4422][Cerc2015]Cow Confinement(差分+扫描线+线段树)
- AngularJS ui-router (嵌套路由)
- PhoneStateListener 引起的内存泄露
- SQLite CRUD
- 如何在Mac OS X上安装 Ruby运行环境