Auto.js 和 AutoJs Web Control 联合起来可以实现免root的Android云控。
但是在实际使用还需要解决以下几个问题:
- app开机自动启动和自动解锁
- app免root自动获取无障碍权限
- app和server通讯支持心跳,断线重连
二、实现步骤
app开机自动启动和自动解锁
注册一个静态广播去监听开机启动完毕的广播,然后在监听到开机广播完毕后启动 Auto.js的主Activity或者Service;
首先需要定义一个继承自BroadcastReceiver的开机广播接收者BaseBroadcastReceiver,然后在AndroidManifest.xml文件中增加对应的权限;
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
幸运的是,原作者已经有了这部分代码,我们只需要增加对开机启动广播的响应即可:
app免root自动获取无障碍权限(需adb授权,重启手机不失效)
在src/main/java/org/calibur/stars/autojs/AutoJs.java 和 src/main/java/org/autojs/autojs/ui/main/MainActivity.java 两个文件中增加openAccessibilityByAdb 函数
把手机设置成开发者模式,连上电脑运行
adb shell pm grant org.calibur.stars android.permission.WRITE_SECURE_SETTINGS
这样就可以自动获取无障碍模式了,重启之后依然有效。 记得运行完之后把开发者模式关掉。
app和server通讯支持心跳,断线重连
原版app WebSocket不是很稳定,经常会掉线,所以这里我们增加一个定时心跳,每分钟向服务器sayHello,服务器收到之后返回Hello,如果2分钟都没有收到服务器返回的hello,说明连接有问题就自动重连。
本文涉及到的代码项目可以去 奋飞的朋友们 知识星球自取,欢迎加入知识星球一起学习探讨技术。有问题可以加我wx: fenfei331 讨论下。
关注微信公众号,最新技术干货实时推送