代码开启无障碍服务

本文介绍了两种自动启动Android AccessibilityService的方法:修改源码和将应用设为系统应用。在源码中,需要在SettingsProvider的DatabaseHelper.java中加载相关设置;若作为系统应用,需在AndroidManifest.xml声明权限,并在启动时设置AccessibilityService。尽管第二种方法在某些情况下可能出现问题,但通常能有效开启无障碍服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码开启无障碍服务

定义的AccessibilityService默认是关闭的,需要在无障碍界面手动打开或者自动启动。
目前有两种方式可以自动启动改服务。需要修改源码或配置应用为系统应用。

1、源码中修改
frameworks\base\packages\SettingsProvider\src\com\android\providers\settings\DatabaseHelper.java
在loadSecureSettings函数中添加如下代码:
loadSetting(stmt, Settings.Secure.ACCESSIBILITY_ENABLED, 1);
loadSetting(stmt, Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,“你定义的服务”);
“你定义的服务”填写的格式:com.125la.main/com.125la.service.MyAccessibilityService

2、系统应用并在系统中编译
在AndroidManiferst.xml中声明权限需求

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

在APP启动入口处添加:

Settings.Secure.putString(getContentResolver(),Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,"你定义的服务");
Settings.Secure.putInt(getContentResolver(),Settings.Secure.ACCESSIBILITY_ENABLED, 1);

“你定义的服务”填写的格式:pkgname/classname

1表示开启,0表示关闭

关闭无障碍的代码

Settings.Secure.putString(getContentResolver(),Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,"");
Settings.Secure.putString(getContentResolver(),Settings.Secure.ACCESSIBILITY_ENABLED, 0);

3、总结:
我试过两个方法,第二个方法出现些小问题,比如第一次烧录系统后和恢复出厂设置后出现无法监听,其他情况下是可以的。

参考文章
android查看自启动服务,AccessibilityService自启动
代码开启无障碍服务-系统应用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值