Auto.js一些高级用法

  1. 判断本脚本是否重复运行
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("本脚本重复运行");

  1. 在坐标位置显示一个十字架,提示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);
}
  1. 监控脚本是否卡在某界面不动,发现此情况重启脚本
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();
            });
        }
    }
});

  1. 兼容安卓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);
            }

        }
    }
}

  1. 跳转到加QQ
                app.startActivity({
                    action: "android.intent.action.VIEW",
                    data: "mqqapi://car/show_pslcard?&uin=542999277"
                })

  1. 提醒开启无障碍服务
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();
    }
});


  1. 跳转到开启悬浮窗(在其它应用窗口上显示,貌似要先设置一下无障碍,才能成功跳这个)
        int = app.startActivity({
            packageName: "com.android.settings",
            className: "com.android.settings.Settings$AppDrawOverlaySettingsActivity",
            data: "package:" + auto.service.getPackageName().toString()
        });

你可能感兴趣的:(autojs)