在AOSP 13中默认启用自定义APK的辅助功能服务
实现AOSP 13默认开启自定义APK的辅助功能服务
可以通过修改AOSP系统层面的配置实现,无需修改目标APK,以下是几种可行方案:
方案1:修改SettingsProvider的默认配置
enabled_accessibility_services属于系统安全设置项,可通过SettingsProvider的默认值文件预先配置:
- 打开AOSP源码中的
frameworks/base/packages/SettingsProvider/res/values/defaults.xml - 添加或修改对应项:
如果需要默认开启多个辅助服务,用冒号分隔:<item name="enabled_accessibility_services" type="string">"com.example.yourapp/.YourAccessibilityService"</item><item name="enabled_accessibility_services" type="string">"com.example.yourapp/.YourAccessibilityService:com.another.app/.AnotherService"</item> - 重新编译SettingsProvider模块或整个AOSP,刷入设备后,系统初始化时会自动应用这个默认值。
方案2:通过系统初始化脚本执行设置命令
利用系统启动阶段的脚本直接写入设置项,步骤如下:
- 在AOSP源码中创建或修改设备专属init脚本(比如
device/[你的设备型号]/init.[你的设备型号].rc) - 添加以下命令,确保在系统服务启动完成后执行:
on boot_completed exec -- /system/bin/settings put secure enabled_accessibility_services "com.example.yourapp/.YourAccessibilityService" - 编译并刷入系统,系统启动完成后会自动执行该命令开启服务。
方案3:修改Settings应用预勾选服务
如果需要在设置界面中也默认显示已勾选状态,可修改Settings应用代码:
- 打开
packages/apps/Settings/src/com/android/settings/accessibility/AccessibilitySettings.java - 在加载辅助服务列表的逻辑中,为目标服务设置默认勾选状态。不过这种方式相对繁琐,不如前两种直接高效。
注意事项
- 确保目标APK已预装到系统分区(如
system/app或product/app目录),否则系统无法识别该辅助服务; - 辅助服务的声明必须符合AOSP规范(在AndroidManifest.xml中正确配置
accessibility-service标签及相关权限); - 你已验证的ADB命令本质就是修改该安全设置项,上述方案都是在系统层面实现相同效果,只是执行时机更早(系统初始化阶段)。
内容的提问来源于stack exchange,提问作者Margish thumar
相关产品推荐
相关产品推荐

