项目中遇到需要将客户的无障碍服务设置为默认开启,无障碍服务,是可以监听界面的操作,比如:点击、拖动、界面更新等信息的,更为强大的是可以获取屏幕信息,同时具备普通Service的能力。

具体如何设置呢?代码如下:

        try{Set<ComponentName> enabledServices = AccessibilityUtils.getEnabledServicesFromSettings(context);    //这个是获取所有可用的无障碍service列表if (enabledServices == (Set<?>) Collections.emptySet()) {    //如果获取的service集合为空,新创建一个集合enabledServices = new HashSet<ComponentName>();}ComponentName toggledService = ComponentName.unflattenFromString("com.vc/.service.DetectionService");//添加自己服务的包名和类名enabledServices.add(toggledService);    //将需要设置的服务降到集合里// Enabling at least one service enables accessibility.StringBuilder enabledServicesBuilder = new StringBuilder();    for (ComponentName enabledService : enabledServices) {enabledServicesBuilder.append(enabledService.flattenToString());    //将所有的服务变成字符串,串到一起enabledServicesBuilder.append(AccessibilitySettings.ENABLED_ACCESSIBILITY_SERVICES_SEPARATOR);    //每次添加一个服务的时候后面加上分隔符.}final int enabledServicesBuilderLength = enabledServicesBuilder.length();if (enabledServicesBuilderLength > 0) {enabledServicesBuilder.deleteCharAt(enabledServicesBuilderLength - 1);    //添加最后一个服务肯定会多出一个分隔符,这里删掉多余的分隔符}android.provider.Settings.Secure.putString(context.getContentResolver(),android.provider.Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,enabledServicesBuilder.toString());    //将服务的字符串重新存储// Update accessibility enabled.android.provider.Settings.Secure.putInt(context.getContentResolver(),android.provider.Settings.Secure.ACCESSIBILITY_ENABLED, 1);    }catch(Exception e){}

上面的代码中获取所有无障碍service方法getEnabledServicesFromSettings是由AccessibilityUtils类来处理的,AccessibilityUtils这个类Android6.0的路径是在packages/apps/Settings/src/com/android/settings/accessibility/AccessibilityUtils.java,Android 7.0之后被放到了frameworks/base/packages/SettingsLib/src/com/android/settingslib/accessibility/AccessibilityUtils.java这里,

           /*** @return the set of enabled accessibility services. If there are no services,* it returns the unmodifiable {@link Collections#emptySet()}.*/public static Set<ComponentName> getEnabledServicesFromSettings(Context context) {return getEnabledServicesFromSettings(context, UserHandle.myUserId());}/*** @return the set of enabled accessibility services for {@param userId}. If there are no* services, it returns the unmodifiable {@link Collections#emptySet()}.*/public static Set<ComponentName> getEnabledServicesFromSettings(Context context, int userId) {final String enabledServicesSetting = Settings.Secure.getStringForUser(context.getContentResolver(), Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,userId);if (enabledServicesSetting == null) {return Collections.emptySet();}final Set<ComponentName> enabledServices = new HashSet<>();final TextUtils.SimpleStringSplitter colonSplitter = sStringColonSplitter;colonSplitter.setString(enabledServicesSetting);while (colonSplitter.hasNext()) {final String componentNameString = colonSplitter.next();final ComponentName enabledService = ComponentName.unflattenFromString(componentNameString);if (enabledService != null) {enabledServices.add(enabledService);}}return enabledServices;}

这样就可以将自己的无障碍服务设置默认打开了~

Android 无障碍服务设置相关推荐

  1. Android 无障碍服务自动点击

    业余时间了解了Android无障碍服务的一些有趣功能,比如微信自动抢红包.应用宝的一键安装功能等.大致原理是监听手机窗体内容变化,拿到对应的View,进行点击.长按等Touch操作,下面我们就借助 A ...

  2. Android无障碍服务开发

    https://actionwind.wordpress.com/2022/04/17/android%e6%97%a0%e9%9a%9c%e7%a2%8d%e6%9c%8d%e5%8a%a1%e5% ...

  3. Android无障碍检测,Android无障碍服务检测通知

    我试图让我的应用在显示通知时进行检测.我已经在设置应用程序中启用它,并且onServiceConnected确实被调用,但是当我通过Gmail应用程序创建通知或接收电子邮件时,什么也没有发生,onAc ...

  4. Android无障碍服务( Accessibility Service)应用

    无障碍服务是一个应用程序,它给有残疾的用户或暂时无法与设备完全交互的用户提供了更好的无障碍用户交互功能.比如驾驶.照顾小孩或者在吵闹的派对上可能需要额外或者替代的交互反馈. Android提供了标准的 ...

  5. android无障碍服务网页,android无障碍

    安卓手机无障碍服务指的是什么 许多Android用户有不同的能力(限制),这要CSS布局HTML小编今天和大家分享他们以不同的方式使用他们的Android设备.这些限制包括视力,肢体或与年龄有关,这些 ...

  6. Android 判断无障碍服务权限是否已经打开

    (Android无障碍服务开发QQ群:752296312)  本文以下内容转摘自:https://blog.csdn.net/liuhongshuo2012/article/details/50751 ...

  7. Android 一文学会无障碍服务(AccessibilityService)

    什么是无障碍服务? 无障碍服务(AccessibilityService)是一套可以模拟操作的系统级别的API.用户同意我们的应用获取无障碍服务的权限之后就可以模拟操作,来控制用户的手机.无障碍被广泛 ...

  8. Android 无障碍实现微信抢红包辅助

    简介 马上过年了,又到了发红包的时间,抢红包又蠢蠢欲动了,所以利用Android无障碍服务实现了一个微信自用抢红包辅助,好快速抢家里长辈发的红包哈哈. 使用 下载红包辅助,打开红包辅助,打开无障碍,通 ...

  9. Android实现自动点击 - 无障碍服务

    ps: 不想看代码的滑到最下面有apk包百度网盘下载地址 1. 先看效果图 不然都是耍流氓 2.项目目录 3.一些配置 build.gradle plugins {id 'com.android.ap ...

最新文章

  1. 蝙蝠为啥这么厉害?地球人整明白了没有?
  2. 乐视秒杀架构解读:从零开始搭建百万每秒订单系统
  3. C#3.0学习笔记(8)浅谈接口interface
  4. selenium切换窗口 java_WebDriver(Selenium2) 根据新窗口title切换窗口
  5. javascript:window.showModalDialog缓存问题
  6. innobackupex远程备份脚本
  7. “买苹果辞退,买华为补贴”,这家公司支持国产手机的理由给我惊到了!
  8. c++的学习笔记之二
  9. qq android qav,33 BK.QQAVManager 音视频管理
  10. Opencv之Meanshift和Camshift
  11. Unity3d 内存管理那些事
  12. 热门流量主小程序证件智能扫描A4系统开发
  13. 关于自定View的ViewGroup (嵌套View)
  14. IntelliJ IDEA在Mac下格式化代码快捷键
  15. jquery:toggle()方法模拟鼠标连续click事件
  16. 双态运维联盟工作会议暨2017年度双态运维大会乌镇峰会筹备会在新华三杭州园区召开...
  17. 如何获得使用PHP的服务器的本地IP地址?
  18. 图的建立——邻接矩阵
  19. java计算器制作教学视频_java实例——简单计算器的制做
  20. eeprom与pcf859

热门文章

  1. 360卫士破坏桌面 金山卫士修复系统
  2. 比较两个对象 取最大值 并返回对象
  3. 网卡PHY 移植注意事项
  4. Android 读取string.xml到EXCEL表格
  5. Linux下访问数据库
  6. 南京市推出新举措 用以做大做强软件产业
  7. [iOS开发] 电子书下载链接
  8. Matlab: 常用语句
  9. 跟我学aspectj之一 ----- 简介
  10. oVirt快速安装指南