使用Android Accessibility实现免Root自动批量安装功能

本文介绍了豌豆荚如何利用Android Accessibility API实现免Root自动批量安装应用的功能。通过后台下载应用后,调用PackageInstaller并模拟用户点击完成安装。文章详细讲解了AccessibilityService的实现、UI元素获取及模拟点击的过程,以及在适配各种Android ROM时面临的挑战和解决方案。
摘要由CSDN通过智能技术生成

对于国内Android设备,应用的自动批量安装/更新一直是一个痛点,在之前,第三方应用商店通常要求设备Root,然后调用系统的PackageManagerService命令行来实现后台安装。最近,豌豆荚利用Android Accessibility(辅助功能)在业内率先实现了免Root自动批量安装功能。

这个功能实现的原理是,在后台批量下载应用后,调用系统的PackageInstaller,获取安装界面的按钮位置,然后通过Accessibility提供的模拟用户点击功能,代替用户自动点击下一步,直到安装结束。

虽然技术看起来不是特别困难,但在实现中还是有不少坑的,豌豆荚工程师向我们分享了该功能的一些技术细节和实践经验。

Android Accessibility API介绍与调用方法

对于那些由于视力、听力或其它身体原因导致不能方便使用Android智能手机的用户,Android提供了Accessibility功能和服务帮助这些用户更加简单地操作设备,包括文字转语音、触觉反馈、手势操作、轨迹球和手柄操作。开发者可以搭建自己的Accessibility服务,这可以加强应用的可用性,例如声音提示,物理反馈,和其他可选的操作模式。

随着Android系统版本的迭代,Accessibility功能也越来越强大,它能实时地获取当前操作应用的窗口元素信息,并能够双向交互,既能获取用户的输入,也能对窗口元素进行操作,比如点击按钮。更多的介绍见Android开发者官网的Accessibility页面

调用Android Accessibility API需要三个步骤:申请权限、注册 Service、配置 Accessibility Service Info。使用Accessibility API需要的权限如下:

<uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE"/>

注册Service

<service android:name="com.your.AccessibilityImpl.className"
        android:label="@string/acc_auto_install_service_name"
        android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
        android:enabled="@bool/enable_accessibility">
   <intent-filter>
       <action android:name="android.accessibilityservice.AccessibilityService" />
   </intent-filter>
   <meta-data android:name="android.accessibilityservice" android:resource="@xml/accessibility_config" />
</service>

配置Accessibility Service Info

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值