- 判断本脚本是否重复运行
my_count = 0;
ne = engines.myEngine();
my_path = ne.mTags.get("execute_path") + "/" + ne.source;
engines.all().forEach(e => {
path = e.mTags.get("execute_path") + "/" + e.source;
if(path == my_path) my_count++;
});
if (my_count > 1) toast("本脚本重复运行");
- 在坐标位置显示一个十字架,提示2秒后关闭,方便调试
function showXyTap(x,y){
var xy = floaty.window(
<frame gravity="center" w="30" h="30" alpha="0.6">
<View w="2" h="30" bg="#ff00e4"></View>
<View w="30" h="2" bg="#00ff42"></View>
</frame>
);
xy.setPosition(Math.abs(x-15),Math.abs(y-15));
setTimeout(()=>{
xy.close();
}, 2000);
}
- 监控脚本是否卡在某界面不动,发现此情况重启脚本
function Observer() {
function unique(arr) {
let newArr = [arr[0]];
for (let i = 1; i < arr.length; i++) {
let flag = false;
for (var j = 0; j < newArr.length; j++) {
if (arr[i] == newArr[j]) {
flag = true;
break;
}
}
if (!flag) {
newArr.push(arr[i]);
}
}
return newArr;
}
currentActis = new Array();
for (let c = 0; c < 100; c++) {
sleep(500);
currentActis[c] = currentActivity();
}
ac = unique(currentActis);
if (ac.length == 1) {
return false
}
return true
}
// 》》》》》》》》》》》》》》》》》》》 START
work_thread = threads.start(function () {
Main();
});
observer_thread = threads.start(function () {
while (true) {
sleep(5000);
if (!Observer()) {
work_thread.interrupt();
work_thread = threads.start(function () {
console.setPosition(device.width / 2, device.height / 1.5);
console.show();
console.warn("Main线程在5秒后重启!");
sleep(5000);
console.hide();
Main();
});
}
}
});
- 兼容安卓7.0以上与6.0以下的点击,6.0需要root
function clickHelper2(x, y) {
showXyTap(x, y);
if (IS_GT_SDK23) {
click(x, y);
} else {
try {
// 容易出毛病,toomanyevenliserException
Tap(x, y);
runtime.sleep(1000);
} catch (e) {
try {
if (!ra) {
ra = new RootAutomator();
}
// 保险点击
ra.tap(x, y, 1);
runtime.sleep(800);
// ra.press(x, y, 10, 1);
} catch (e) {
ErrorHandle("在此设备上需要Root权限才能运行本脚本!", true);
}
}
}
}
5.跳转到加QQ
app.startActivity({
action: "android.intent.action.VIEW",
data: "mqqapi://car/show_pslcard?&uin=542999277"
})
6.提醒开启无障碍服务
ui.autoService.on("check", function (checked) {
// 用户勾选无障碍服务的选项时,跳转到页面让用户去开启
if (checked && auto.service == null) {
app.startActivity({
action: "android.settings.ACCESSIBILITY_SETTINGS"
});
}
if (!checked && auto.service != null) {
auto.service.disableSelf();
}
});
7.跳转到开启悬浮窗(在其它应用窗口上显示,貌似要先设置一下无障碍,才能成功跳这个)
int = app.startActivity({
packageName: "com.android.settings",
className: "com.android.settings.Settings$AppDrawOverlaySettingsActivity",
data: "package:" + auto.service.getPackageName().toString()
});
更多技巧整理中,请关注