Autojs的无障碍服务自启动是什么

描述

对于一个依赖无障碍服务的应用来说,App关闭的时候就会关闭无障碍服务权限,以至于每次启动都需要去手动打开一次无障碍服务,这无疑会让人很抓狂.但是这对于用户来说这又是安全的,否则各种流氓岂不是可以随意操控你的手机了,有限制才会有安全...

今天的这篇文章呢,是利用一个系统的权限

android.permission.WRITE_SECURE_SETTINGS

这个权限对于开发安装的人来说,都应该明白,如果我们直接在AndroidMainifast.xml中声明,会报错,原因就是我们不是系统应用,属于第三方,所以没有权限使用这个权限.但是如果我们使用adb调试来针对某一个app来授权,那就可以拿到这个权限了,授权的命令为:

adb shell pm grant PACKAGE_NAME android.permission.WRITE_SECURE_SETTINGS

其中PACKAGE_NAME为你要授权的应用包名.例如: org.autojs.autojspro

adb命令如何安装到你的电脑上,如何使用我就不教了,自行百度吧.其他的废话,我也不多说了,直接上我们今天的脚本代码.

importClass(android.content.Context);
importClass(android.provider.Settings);
importClass(android.content.pm.PackageManager);


if (!checkSelfPermission("android.permission.WRITE_SECURE_SETTINGS")) {
    toastLog("出错了,请查看日志界面内容");
    console.error("\\n您没有为autojs/autojsPro授予WRITE_SECURE_SETTINGS权限!\\n"+
             "授权方法: 您需要打开USB调试并连接一台电脑,使用adb命令给autojs授权,命令为:\\n"+
             "adb shell pm grant "+context.getPackageName()+" android.permission.WRITE_SECURE_SETTINGS");
    setClip("adb shell pm grant "+context.getPackageName()+" android.permission.WRITE_SECURE_SETTINGS");
    toastLog("命令已写入到剪贴板");
    exit();
}


if (auto.service == null) {
    //这里没有启动无障碍服务 这里我启动了autojs免费版和pro版的无障碍服务
    try {
        var enabledServices = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES);
        var Services = enabledServices + ":org.autojs.autojspro/com.stardust.autojs.core.accessibility.AccessibilityService"+
                                         ":org.autojs.autojs/com.stardust.autojs.core.accessibility.AccessibilityService";
        Settings.Secure.putString(context.getContentResolver(), Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES, Services);
        Settings.Secure.putString(context.getContentResolver(), Settings.Secure.ACCESSIBILITY_ENABLED, '1');
    } catch (e) {
        toastLog("您没有为autojs/autojsPro授予WRITE_SECURE_SETTINGS权限");
        exit();
    }
}


/**
 * 检查自身是否开启某权限
 * @param {string} permission 权限名称
 */
function checkSelfPermission(permission) {
    return context.checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED
}
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分