分享几个AutoJs工具方法直接拿过去用吧

有些是我原创有些是互联网弄过来的,个人感觉写autojs项目还是非常使用的,东找西找的费劲我就给大家发一下我争取一直更新。

哪里写的不好大家提出批评指正共同优化。

1、获取IP地址和IP所在地(在百度和搜狐上获取的如果这2个都搞不定那完蛋)

/**
 * 获取IP地址和IP所在地
 */
function getIpAdressAndIpGps() {
    try {
      let ip = ""
      let address = ""
      let response = http.get('http://pv.sohu.com/cityjson?ie=utf-8');
      if (response.statusCode == 200) {
        toastLog("sohu")
        let InetIP = response.body.string()
        eval(InetIP)
        ip = (returnCitySN.cip)
        address = (returnCitySN.cname)
      } else {
        toastLog("baidu")
        let ip_gps = false
        let ip_regx = /本机IP:&nbsp;d{1,3}.d{1,3}.d{1,3}.d{1,3}</span>([sS]*?)</td/
        let ipUrl = "http://www.baidu.com/s?ie=UTF-8&wd=ip归属地查询" //百度的
        let response = http.get(ipUrl);
        if (response.statusCode == 200) {
            let htmlResult = response.body.string()
            ip_gps = ip_regx.exec(htmlResult)
            let responseRex = ip_regx.exec(ip_gps)
            ip = responseRex[0].split(";")[1].split("</span>")[0]
            address = responseRex[1]
        }
      }
      return ip   "@"   address
    } catch (error) {
      return "获取IP和所在地失败"   "@"   error
    }
  }

2、获取android手机安装的程序(系统的你自己可以过滤一下我比较懒就没过滤,说实话确实有点慢)

/**
 * 获取手机安装app的集合
 */
function getAppList() {
    var pm = context.getPackageManager()
    var appList = pm.getInstalledApplications(0)
    var appInfoList = []
    for (let i = 0; i < appList.size(); i  ) {
        var app = appList.get(i)
        var appInfo = {
            appName: app.loadLabel(pm),
            packageName: app.packageName,
            isSystemApp: app.isSystemApp()
        }
        if (!app.isSystemApp()) {
            appInfoList.push(appInfo)
        }
    }
    return appInfoList
}

3、预定义随机函数(少些好多局)

/**
 * 休眠随机1秒至3秒
 */
function sleepRandom1() {
    sleep(random(1000, 3000));
}
/**
 * 休眠随机3秒至5秒
 */
function sleepRandom3() {
    sleep(random(3000, 5000));
}
/**
 * 休眠随机5秒至7秒
 */
function sleepRandom5() {
    sleep(random(5000, 7000));
}
/**
 * 休眠随机7秒至9秒
 */
function sleepRandom7() {
    sleep(random(7000, 9000));
}

4、控件点击公共方法,我认为这个最好节省代码还能随便点点。示例:

 clickControl(uiSelector("iv_fc_red_close"));

 clickControl(id("iv_fc_red_close"));

用我的ui选择器也行用原生的id、text、desc也成,节省N多代码同时兼容性也变得很好,方法判断了 是否存在和是否可点击。

点击控件的方法目前不支持范围Bounds点击,如果点击范围请使用clickBounds(b)。


/**
 * 点击屏幕上的坐标
 * @param {坐标} b 
 */
function clickBounds(b) {
    return clickResult = click(b.centerX(), b.centerY());
}
/**
 * 点击UI上的控件
 * @param {UI上的元素} element 
 */
function clickControl(element) {
    let clickResult = false;
    if (element == null) {
        return false;
    }
    try {
        if (element.exists()) {
            toastLog("准备click:"   element);
            let clickable = element.findOnce().clickable();//是否可以点击
            if (clickable) {
                clickResult = element.findOnce().click();
                sleep(random(2000, 3200));
            } else {
                let b = element.findOnce().bounds();
                clickResult = click(b.centerX(), b.centerY());
                sleep(random(2000, 3200));
            }
        }
        return clickResult;
    } catch (error) {
        toastError("clickControl方法出现错误:"   error)
        return false;
    }

}
/**
 * 元素对象
 * @param {ID或name} obj 
 */
function uiSelector(obj) {
    let element = null;
    try {
        if (text(""   obj   "").exists()) {
            toastLog(text(""   obj   ""))
            element = text(""   obj   "");
            return element;
        }
        if (desc(""   obj   "").exists()) {
            toastLog(desc(""   obj   ""))

            element = desc(""   obj   "");
            return element;
        }
        if (id(""   obj   "").exists()) {
            toastLog(id(""   obj   ""))
            element = id(""   obj   "");
            return element;
        }
        return element
    } catch (error) {
        toastError(error);
        return null;
    }
}

5、强制停止App 我做了各种兼容主流的机器问题不大,目前小米 华为 oppo 魅族 荣耀问题不大。

/**
 * 强制停止app
 * @param {应用名称} appName 
 */
function stopApp(appName) {
    try {
        openAppSetting(getPackageName(appName));
        sleep(3000);
        if (className("android.widget.Button").text("强行停止").exists()) {
            className("android.widget.Button").text("强行停止").findOnce().click();
        } else {
            if (text("强行停止").exists()) {
                text("强行停止").findOnce().click();
            }
        }
        sleep(3000);
        if (className("android.widget.Button").text("确定").exists()) {
            className("android.widget.Button").text("确定").findOnce().click();
            toastLog(appName   "已经停止!");
        }
        else {
            if (text("强行停止").exists()) {
                text("强行停止").findOnce().click();
                toastLog(appName   "已经停止!");
            } else {
                if (text("结束运行").exists()) {
                    text("结束运行").findOnce().click();
                    sleep(500);
                    if (text("确定").exists()) {
                        text("确定").findOnce().click();
                        toastLog("MIUI9 Android7"   appName   "已经停止!");
                    }
                }
            }

        }
    } catch (e) {
        toastLog(e);
    }
}

6、时间函数,获取当天和获取时分秒的


/**
 * 获取当前时间格式yyyyMMdd
 */
function getDate() {
    var date = new Date();
    var year = date.getFullYear();
    var month = date.getMonth()   1;
    if (month < 10) {
        month = "0"   month;
    };
    var day = date.getDate();
    if (day < 10) {
        day = "0"   day;
    };
    return year   "-"   month   "-"   day;
}
/**
 * 
 */
function getTime() {
    var date = new Date();
    var year = date.getFullYear();
    var month = date.getMonth()   1;
    if (month < 10) {
        month = "0"   month;
    };
    var day = date.getDate();
    if (day < 10) {
        day = "0"   day;
    };
    var hour = date.getHours();
    if (hour < 10) {
        hour = "0"   hour;
    };
    var minute = date.getMinutes();
    if (minute < 10) {
        minute = "0"   minute;
    };
    var seconds = date.getSeconds();     //获取当前秒数(0-59)
    var millisecond = date.getMilliseconds();    //获取当前毫秒数(0-999)
    return year   "-"   month   "-"   day   " "   hour   ":"   minute   ":"   seconds ":" millisecond;
}

哪里写的不好大家提出批评指正共同优化。

有些是我原创有些是互联网弄过来的,个人感觉写autojs项目还是非常使用的,东找西找的费劲我就给大家发一下我争取一直更新。

哪里写的不好大家提出批评指正共同优化。

1、获取IP地址和IP所在地(在百度和搜狐上获取的如果这2个都搞不定那完蛋)

/**
 * 获取IP地址和IP所在地
 */
function getIpAdressAndIpGps() {
    try {
      let ip = ""
      let address = ""
      let response = http.get('http://pv.sohu.com/cityjson?ie=utf-8');
      if (response.statusCode == 200) {
        toastLog("sohu")
        let InetIP = response.body.string()
        eval(InetIP)
        ip = (returnCitySN.cip)
        address = (returnCitySN.cname)
      } else {
        toastLog("baidu")
        let ip_gps = false
        let ip_regx = /本机IP:&nbsp;d{1,3}.d{1,3}.d{1,3}.d{1,3}</span>([sS]*?)</td/
        let ipUrl = "http://www.baidu.com/s?ie=UTF-8&wd=ip归属地查询" //百度的
        let response = http.get(ipUrl);
        if (response.statusCode == 200) {
            let htmlResult = response.body.string()
            ip_gps = ip_regx.exec(htmlResult)
            let responseRex = ip_regx.exec(ip_gps)
            ip = responseRex[0].split(";")[1].split("</span>")[0]
            address = responseRex[1]
        }
      }
      return ip   "@"   address
    } catch (error) {
      return "获取IP和所在地失败"   "@"   error
    }
  }

2、获取android手机安装的程序(系统的你自己可以过滤一下我比较懒就没过滤,说实话确实有点慢)

/**
 * 获取手机安装app的集合
 */
function getAppList() {
    var pm = context.getPackageManager()
    var appList = pm.getInstalledApplications(0)
    var appInfoList = []
    for (let i = 0; i < appList.size(); i  ) {
        var app = appList.get(i)
        var appInfo = {
            appName: app.loadLabel(pm),
            packageName: app.packageName,
            isSystemApp: app.isSystemApp()
        }
        if (!app.isSystemApp()) {
            appInfoList.push(appInfo)
        }
    }
    return appInfoList
}

3、预定义随机函数(少些好多局)

/**
 * 休眠随机1秒至3秒
 */
function sleepRandom1() {
    sleep(random(1000, 3000));
}
/**
 * 休眠随机3秒至5秒
 */
function sleepRandom3() {
    sleep(random(3000, 5000));
}
/**
 * 休眠随机5秒至7秒
 */
function sleepRandom5() {
    sleep(random(5000, 7000));
}
/**
 * 休眠随机7秒至9秒
 */
function sleepRandom7() {
    sleep(random(7000, 9000));
}

4、控件点击公共方法,我认为这个最好节省代码还能随便点点。示例:

 clickControl(uiSelector("iv_fc_red_close"));

 clickControl(id("iv_fc_red_close"));

用我的ui选择器也行用原生的id、text、desc也成,节省N多代码同时兼容性也变得很好,方法判断了 是否存在和是否可点击。

点击控件的方法目前不支持范围Bounds点击,如果点击范围请使用clickBounds(b)。


/**
 * 点击屏幕上的坐标
 * @param {坐标} b 
 */
function clickBounds(b) {
    return clickResult = click(b.centerX(), b.centerY());
}
/**
 * 点击UI上的控件
 * @param {UI上的元素} element 
 */
function clickControl(element) {
    let clickResult = false;
    if (element == null) {
        return false;
    }
    try {
        if (element.exists()) {
            toastLog("准备click:"   element);
            let clickable = element.findOnce().clickable();//是否可以点击
            if (clickable) {
                clickResult = element.findOnce().click();
                sleep(random(2000, 3200));
            } else {
                let b = element.findOnce().bounds();
                clickResult = click(b.centerX(), b.centerY());
                sleep(random(2000, 3200));
            }
        }
        return clickResult;
    } catch (error) {
        toastError("clickControl方法出现错误:"   error)
        return false;
    }

}
/**
 * 元素对象
 * @param {ID或name} obj 
 */
function uiSelector(obj) {
    let element = null;
    try {
        if (text(""   obj   "").exists()) {
            toastLog(text(""   obj   ""))
            element = text(""   obj   "");
            return element;
        }
        if (desc(""   obj   "").exists()) {
            toastLog(desc(""   obj   ""))

            element = desc(""   obj   "");
            return element;
        }
        if (id(""   obj   "").exists()) {
            toastLog(id(""   obj   ""))
            element = id(""   obj   "");
            return element;
        }
        return element
    } catch (error) {
        toastError(error);
        return null;
    }
}

5、强制停止App 我做了各种兼容主流的机器问题不大,目前小米 华为 oppo 魅族 荣耀问题不大。

/**
 * 强制停止app
 * @param {应用名称} appName 
 */
function stopApp(appName) {
    try {
        openAppSetting(getPackageName(appName));
        sleep(3000);
        if (className("android.widget.Button").text("强行停止").exists()) {
            className("android.widget.Button").text("强行停止").findOnce().click();
        } else {
            if (text("强行停止").exists()) {
                text("强行停止").findOnce().click();
            }
        }
        sleep(3000);
        if (className("android.widget.Button").text("确定").exists()) {
            className("android.widget.Button").text("确定").findOnce().click();
            toastLog(appName   "已经停止!");
        }
        else {
            if (text("强行停止").exists()) {
                text("强行停止").findOnce().click();
                toastLog(appName   "已经停止!");
            } else {
                if (text("结束运行").exists()) {
                    text("结束运行").findOnce().click();
                    sleep(500);
                    if (text("确定").exists()) {
                        text("确定").findOnce().click();
                        toastLog("MIUI9 Android7"   appName   "已经停止!");
                    }
                }
            }

        }
    } catch (e) {
        toastLog(e);
    }
}

6、时间函数,获取当天和获取时分秒的


/**
 * 获取当前时间格式yyyyMMdd
 */
function getDate() {
    var date = new Date();
    var year = date.getFullYear();
    var month = date.getMonth()   1;
    if (month < 10) {
        month = "0"   month;
    };
    var day = date.getDate();
    if (day < 10) {
        day = "0"   day;
    };
    return year   "-"   month   "-"   day;
}
/**
 * 
 */
function getTime() {
    var date = new Date();
    var year = date.getFullYear();
    var month = date.getMonth()   1;
    if (month < 10) {
        month = "0"   month;
    };
    var day = date.getDate();
    if (day < 10) {
        day = "0"   day;
    };
    var hour = date.getHours();
    if (hour < 10) {
        hour = "0"   hour;
    };
    var minute = date.getMinutes();
    if (minute < 10) {
        minute = "0"   minute;
    };
    var seconds = date.getSeconds();     //获取当前秒数(0-59)
    var millisecond = date.getMilliseconds();    //获取当前毫秒数(0-999)
    return year   "-"   month   "-"   day   " "   hour   ":"   minute   ":"   seconds ":" millisecond;
}

哪里写的不好大家提出批评指正共同优化。

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在