Android 使用root自动打开无障碍权限

Android 使用root自动打开无障碍权限

使用 root权限自动打开无障碍

有些操作需要用到无障碍。在已经获取root的情况下是可以自动打开的。无需用户手动操作。

  • 第一步:获取应用的无障碍路径

路径规则为:<包名>/<无障碍类名>

以下是示例:

com.yzy.pokuni/com.yzy.pokuni.service.AppAccessibilityService

斜杠左边是包名,右边是无障碍服务的完整类路径。

另一种方法是使用命令行自动获取类路径。先打开手机的无障碍,并开启对应的app的服务 ,然后在shell下执行以下命令:

rk3399:/ # settings get secure enabled_accessibility_services
com.yzy.pokuni/com.yzy.pokuni.service.AppAccessibilityService
rk3399:/ #

如上,他会输出当前已打开的无障碍的服务列表。找到自己app的即可

  • 第二步:开启

利用上面的路径,在 app 内使用root权限执行shell 命令即可:

settings put secure enabled_accessibility_services com.yzy.pokuni/com.yzy.pokuni.service.AppAccessibilityService


settings put secure accessibility_enabled 1

最末尾是需要开启的无障碍路径

补充

使用 adb shell 也可以授予 app 安全权限, 从而可以在软件内自动打开无障碍:

具体可见:adb授予无障碍权限

    //自动开启无障碍服务
    fun autoOpenAccessibilityService(context: Context, classPath: String) {
        Settings.Secure.putString(
            context.contentResolver,
            Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
            classPath
        )//例子:"com.xxx.xxxx/com.xxx.xxxx.service.MyAccessibilityService"
        Settings.Secure.putString(
            context.contentResolver,
            Settings.Secure.ACCESSIBILITY_ENABLED, "1"
        )
    }

    //自动关闭无障碍服务
    fun autoCloseAccessibilityService(context: Context, classPath: String) {
        Settings.Secure.putString(
            context.contentResolver,
            Settings.Secure.ACCESSIBILITY_ENABLED,
            classPath
        )//例子:"com.xxx.xxxx/com.xxx.xxxx.service.MyAccessibilityService"
        Settings.Secure.putString(
            context.contentResolver,
            Settings.Secure.ACCESSIBILITY_ENABLED, "0"
        )
    }

使用上方的两个方法的前提是授予权限:android.permission.WRITE_SECURE_SETTINGS ,可使用 adb 或 root 权限授予

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://zwc365.com/2021/09/26/android-auto-enable-accessibility

Buy me a cup of coffee ☕.