easyclick与autojs的对比和常用代码(完善中)
作成了文档 链接:https://easydoc.xyz/s/10157628
部分代码收集于网络(现在已经不知道作者谁了),如有侵权,请私信我进行删除
启动app
function 启动APP() { logd("启动APP中.") for (var i=0;i<30;i++){ var result = getRunningPkg(); var 包名="com.zhonglihe.ppt"; logd(result); if(result!=包名){ utils.openApp(包名); sleep(2000); }else { logd("APP已经启动."); sleep(2000); return true; break; } } }
utils.openApp(“com.zhonglihe.ppt”);//ec打开应用
launch(“com.tencent.mm”);//aj
logd(“APP已经启动.”);//ec的提示.当然,还有log
控件实例
var 看视频领彩金=text(“看视频 领现金”).getOneNodeInfo(0);
var 看广告=clz(“android.widget.ImageView”).index(1).depth(5).drawingOrder(3).getOneNodeInfo(0);
var 看广告1=clz(“android.widget.Image”).index(0).depth(15).drawingOrder(0).getOneNodeInfo(0);
var 关闭=clz(“android.widget.ImageView”).index(1).depth(5).drawingOrder(2).getOneNodeInfo(0);
var 广告结束=text(“star”).getOneNodeInfo(0);
var 关闭1=id(“com.zhonglihe.ppt:id/tt_video_ad_close_layout”).getOneNodeInfo(0);
if (看视频领彩金){
logd(“开始观看”);
看视频领彩金.click();
sleep(2000);
}
if (看广告 || 看广告1){
logd(“观看广告中.”);
sleep(2000);
}
if(关闭) {
logd(“广告观看完毕,开始关闭窗口”);
关闭.click();
sleep(2000);
return true;
break;
}
if (关闭1){
logd(“广告观看完毕,开始关闭窗口”);
关闭1.click();
sleep(2000);
return true;
break;
}
工具类模块函数
主要是跟Android常用的信息相关联
工具类模块的对象前缀是utils,例如 utils.requestShowLogPermission()这样调用
打开App相关
utils.openApp 打开APP
打开APP
@param packageName 程序的包名
@return 布尔型 true 代表成功,false 代表失败
function main(){
utils.openApp(“com.xx”);
}
main();
utils.openAppByName 打开APP(应用名称)
打开APP,通过应用名称
@param appName 程序名称,比如今日头条
@return 布尔型 true 代表成功,false 代表失败
function main(){
utils.openAppByName(“xx”);
}
main();
Copy to clipboardErrorCopied
utils.openActivity 打开activity
打开一个activity,通过map参数
@param map 例如{“action”:""},key的固定只有
action: 标准的android action字符串
uri: uri可以是http网址,也可以是文件file:///地址,也可以是 URLSchema语法
type: uri对应的type,等同于MIME类型,例如安装apk包的type是 application/vnd.android.package-archive
pkg: 要打开的activity对应的包名
className: 要打开的 className 对应的类名
flag: androi打开activity 标准的flag标志位,特殊情况下可以填写
其他的都是属于intent参数了
@return 布尔型 true 代表成功,false 代表失败
function main(){
//打开安装包界面
var m ={
“action”:“android.intent.action.VIEW”,
“uri”:“file:///sdcard/a.apk”,
“type”:“application/vnd.android.package-archive”
};
var x = utils.openActivity(m);
logd("x "+x);
var map={
"uri":"xx://xx/live/6701887916223941379",
};
utils.openActivity(map);
}
main();
utils.openIntentAction 通过Action打开某个界面
通过Action打开某个界面
@param action action动作,例如 android.settings.ACCESSIBILITY_SETTINGS = 辅助功能,
如果改方法不满足要求,可以直接使用intent进行打开:
常用的action有:
android.settings.ACCESSIBILITY_SETTINGS //辅助功能
android.settings.ADD_ACCOUNT_SETTINGS //添加账户
android.settings.AIRPLANE_MODE_SETTINGS //系统设置首页
android.settings.APN_SETTINGS //APN设置
android.settings.APPLICATION_SETTINGS //应用管理
android.settings.BATTERY_SAVER_SETTINGS //节电助手
android.settings.BLUETOOTH_SETTINGS //蓝牙
android.settings.CAPTIONING_SETTINGS //字幕
android.settings.CAST_SETTINGS //无线显示
android.settings.DATA_ROAMING_SETTINGS //移动网络
android.settings.DATE_SETTINGS //日期和时间设置
android.settings.DEVICE_INFO_SETTINGS //关于手机
android.settings.DISPLAY_SETTINGS //显示设置
android.settings.DREAM_SETTINGS //互动屏保设置
android.settings.HARD_KEYBOARD_SETTINGS //实体键盘
android.settings.HOME_SETTINGS //应用权限,默认应用设置,特殊权限
android.settings.IGNORE_BATTERY_OPTIMIZATION_SETTINGS //忽略电池优化设置
android.settings.INPUT_METHOD_SETTINGS //可用虚拟键盘设置
android.settings.INPUT_METHOD_SUBTYPE_SETTINGS //安卓键盘语言设置(AOSP)
android.settings.INTERNAL_STORAGE_SETTINGS //内存和存储
android.settings.LOCALE_SETTINGS //语言偏好设置
android.settings.LOCATION_SOURCE_SETTINGS //定位服务设置
android.settings.MANAGE_ALL_APPLICATIONS_SETTINGS //所有应用
android.settings.MANAGE_APPLICATIONS_SETTINGS //应用管理
android.settings.MANAGE_DEFAULT_APPS_SETTINGS //与ACTION_HOME_SETTINGS相同
android.settings.action.MANAGE_OVERLAY_PERMISSION //在其他应用上层显示,悬浮窗
android.settings.MANAGE_UNKNOWN_APP_SOURCES //安装未知应用 安卓8.0
android.settings.action.MANAGE_WRITE_SETTINGS //可修改系统设置 权限
android.settings.MEMORY_CARD_SETTINGS //内存与存储
android.settings.NETWORK_OPERATOR_SETTINGS //可用网络选择
android.settings.NFCSHARING_SETTINGS //NFC设置
android.settings.NFC_SETTINGS //网络中的 更多设置
android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS //通知权限设置
android.settings.NOTIFICATION_POLICY_ACCESS_SETTINGS //勿扰权限设置
android.settings.ACTION_PRINT_SETTINGS //打印服务设置
android.settings.PRIVACY_SETTINGS //备份和重置
android.settings.SECURITY_SETTINGS //安全设置
android.settings.SHOW_REGULATORY_INFO //监管信息
android.settings.SOUND_SETTINGS //声音设置
android.settings.SYNC_SETTINGS //添加账户设置
android.settings.USAGE_ACCESS_SETTINGS //有权查看使用情况的应用
android.settings.USER_DICTIONARY_SETTINGS //个人词典
android.settings.VOICE_INPUT_SETTINGS //辅助应用和语音输入
android.settings.VPN_SETTINGS //VPN设置
android.settings.VR_LISTENER_SETTINGS //VR助手
android.settings.WEBVIEW_SETTINGS //选择webview
android.settings.WIFI_IP_SETTINGS //高级WLAN设置
android.settings.WIFI_SETTINGS //选择WIFI,连接WIFI
com.android.settings.Settings$DevelopmentSettingsActivity
@return {null|boolean|*}
function main(){
utils.openIntentAction(“android.settings.ACCESSIBILITY_SETTINGS”);
}
main();
直接使用Intent打开方式
importClass(android.content.Intent);
importClass(android.net.Uri)
var intent = new Intent();
intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
intent.setData(Uri.parse("package:com.gibb.easyclick"))
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try {
context.startActivity(intent);
} catch (e) {
loge(e)
}
图库相关
utils.insertImageToAlbum 图片插入相册
将图片插入到相册中,此方法会立刻更新相册数据
@param path 图片路径
function main(){
utils.insertImageToAlbum("/sdcard/a.png");
}
main();
utils.insertVideoToAlbum 视频插入相册
将视频插入到相册中,此方法会立刻更新相册数据
@param path 视频路径
function main(){
utils.insertVideoToAlbum("/sdcard/a.mp4");
}
main();
其他
utils.readConfigInt 读取整型配置
读取JSON中的整型数据
@param jsonObject JSON对象
@param key 配置项目
@return 整型,找不到就返回0
function main(){
var testData = utils.readConfigInt(jsonObject,“test_key”);
}
main();
utils.readJSONString 读取JSON中字符串
读取JSON中的字符串数据
@param jsonObject JSON对象
@param key 配置项目
@return 字符串 找不到就返回空字符串
function main(){
var testData = utils.readConfigString(jsonObject,“test_key”);
}
main();
utils.isObjectNull 判断一个对象为空
判断一个对象为空
@param o 对象
@return true或者false
function main(){
var isNull = utils.isObjectNull(“test_key”);
}
main();
utils.isObjectNotNull 判断一个对象不为空
判断一个对象不为空
@param o 对象
@return true或者false
function main(){
var isNull = utils.isObjectNotNull(“test_key”);
}
main();
utils.getRatio 取得比例
取得比例,例如10参数,就是返回10%的比例,如果是true,说明随机比例正确,否则不正确
@param ratio 浮点型 1-100
@return true或者false
function main(){
var ratio = utils.getRatio(20f);
toast(ratio);
}
main();
utils.getRangeInt 取得某个范围的随机值
取得某个范围的随机值
@param min 最小值
@param max 最大值
@return 在min和max中间的值,包含最大和最小值
function main(){
var value = utils.getRangeInt(1,100);
toast(value);
}
main();
utils.isTrue 判断布尔型对象是否为真
判断布尔型对象是否为真
@param r 布尔型对象
@return true 或者 false
function main(){
var value = utils.isTrue(true);
}
main();
utils.fileMd5 文件的MD5
文件的MD5
@param file 文件路径
@return 文件MD5字符串或者null
function main(){
var md5 = utils.fileMd5("/sdcard/a.txt");
}
main();
utils.dataMd5 数据计算出来的MD5
数据计算出来的MD5
@param data 数据
@return 数据MD5字符串或者null
function main(){
var md5 = utils.dataMd5(“data”);
}
main();
utils.randomInt 随机整型数据
随机整型数据
@param length 位数,要随机产生多少位的整型数据
@return 整型
function main(){
var r = utils.randomInt(2);
}
main();
utils.randomCharNumber 取得随机的数字和字母
取得随机的数字和字母
@param length 长度
@return 字符串数字混合
function main(){
var r = utils.randomCharNumber(2);
}
main();
utils.getApkPkgName 取得App文件的包名
取得App文件的包名
@param filePath 文件路径
@return 字符串
function main(){
var pkgName = utils.getApkPkgName("/sdcard/app.apk");
}
main();
utils.isAppExist App是否已经安装
App是否已经安装
@param packageName 应用程序的包名
@return true 代表已经安装,false代表未安装
function main(){
var result = utils.isAppExist(“com.xx”);
}
main();
utils.getAppVersionCode 程序的版本标示
取得已安装的程序的版本整型标示
@param packageName 应用程序的包名
@return 整型
function main(){
var versionCode = utils.getAppVersionCode(“com.xx”);
}
main();
utils.getAppVersionName 版本字符串标示
取得已安装的程序的版本字符串标示
@param packageName 应用程序的包名
@return 字符串 例如 1.0.0
function main(){
var r = utils.getAppVersionName(“com.xx”);
}
main();
utils.setClipboardText 设置剪贴板文本
设置剪贴板文本
@param text 文本
@return boolean
function main(){
var r = utils.setClipboardText(“com.xx”);
toast(“设置结果:”+r);
}
main();
utils.getClipboardText 读取剪贴板文本
读取剪贴板文本
@return string
function main(){
var r = utils.getClipboardText();
toast(“读取结果:”+r);
}
main();
random 随机函数
random(最小整数,最大整数);
点击函数
clickPoint 坐标点击
执行条件:无障碍7.0以上或者手势执行为代理服务
点击坐标
@param x x坐标
@param y y坐标
@return {boolean|布尔型}
function main(){
var result = clickPoint(100,100);
if (result){
toast(“点击成功”);
} else {
toast(“点击失败”);
}
}
main();
click 选择器点击
执行条件:无障碍7.0以上或者手势执行为代理服务
点击选择器
@param selectors 选择器对象
@return {boolean|布尔型}
function main(){
var selector = text(“我是文本”);
var result = click(selector);
if (result){
toast(“点击成功”);
} else {
toast(“点击失败”);
}
}
main();
clickText 点击文本
执行条件:无障碍7.0以上或者手势执行为代理服务
点击文本
@param text 文本
@return {boolean|布尔型}
swipeToPoint 坐标点滑动
swipeToPoint(10,10,100,100,200);
drag 拖动坐标
执行条件:无障碍7.0以上或者手势执行为代理服务
从一个坐标到另一个坐标的拖动
@param startX 起始坐标的X轴值
@param startY 起始坐标的Y轴值
@param endX 结束坐标的X轴值
@param endY 结束坐标的Y轴值
@param duration 持续时长 单位毫秒
@return 布尔型 true 拖动成功, false 拖动失败
function main(){
var result = drag(10,10,100,100,200);
if (result){
toast(“拖动成功”);
} else {
toast(“拖动失败”);
}
}
main();
pasteText 粘贴数据
执行条件:无障碍5.0以上
通过选择器粘贴数据
@param selectors 选择器
@param content 数据字符串
@return {boolean|布尔型}
function main(){
var selectors= clz(“android.widget.EditText”);
var result = pasteText(selectors,“我是内容”);
if (result){
toast(“是”);
} else {
toast(“否”);
}
}
main();
clearTextField 清除输入框数据
执行条件:无障碍5.0以上
@param selectors 节点选择器
@return {boolean|布尔型}
function main(){
var selectors= clz(“android.widget.EditText”);
var result = clearTextField(selectors);
if (result){
toast(“是”);
} else {
toast(“否”);
}
}
main();
has 节点存在判断
exits
通过选择器判断元素是否存在
@param selectors 选择器
@return {null|布尔型}
function main(){
var selectors = text(“设置”);
var result = has(selectors);
if (result){
toast(“存在节点”);
} else {
toast(“不存在节点”);
}
}
main();
waitExistActivity 等界面出现
等待activity界面出现
@param activity 界面名称
@param timeout 超时时间,单位毫秒
@return {null|布尔型}
function main(){
var ac = “com.xxx.MainActivity”;
var result = waitExistActivity(ac,10000);
if (result){
toast(“存在界面”);
} else {
toast(“不存在界面”);
}
}
main();
waitExistNode 等节点出现
通过选择器判断并等待元素是否存
@param selectors 选择器
@param timeout 超时时间,单位毫秒
@return {null|布尔型}
function main(){
var selectors = text(“设置”);
var result = waitExistNode(selectors,10000);
if (result){
toast(“存在节点”);
} else {
toast(“不存在节点”);
}
}
main();
getText 获取文本
获取选择器得到的文本数据
@param selectors 选择器
@return {字符串数组|null|字符串集合}
function main(){
var selectors = clz(“android.widget.TextView”);
var result = getText(selectors);
toast(“result:”+result);
}
main();
getOneNodeInfo 获取单个节点
通过选择器 获取第一个节点信息
@param selectors 选择器
@param timeout 等待时间,单位是毫秒
@return NodeInfo 对象或者null
function main(){
var result = getOneNodeInfo(clz(“android.widget.TextView”),10*1000);
toast(“result:”+result);
if (result){
result.click();
}
}
main();
setFetchNodeMode 获取节点的模式
设置获取节点的模式
@param mode 1 是增强型, 2 是快速型,默认是增强型
@param fetchInvisibleNode 是否抓取隐藏的元素,默认不抓取
@param fetchNotImportantNode 是否抓取不重要的元素
@return {boolean|*}
function main(){
var result = setFetchNodeMode(1,true,true);
toast(“result:”+result);
}
main();
home() 返回主页
power() 模拟电源按键
执行条件:无障碍5.0以上或者手势执行为代理服务
模拟电源按键,无障碍是电源对话框,代理模式是电源键按下
back() 返回键
执行条件:无障碍5.0以上或者手势执行为代理服务
返回键
openNotification 打开通知栏
执行条件:无障碍5.0以上或者手势执行为代理服务
打开通知栏
@return {null|布尔型}
function main(){
var result = openNotification();
if (result){
toast(“成功”);
} else {
toast(“失败”);
}
}
main();
openQuickSettings 打开快速设置
执行条件:无障碍5.0以上或者手势执行为代理服务
打开快速设置
@return {null|布尔型}
function main(){
var result = openQuickSettings();
if (result){
toast(“成功”);
} else {
toast(“失败”);
}
}
main();
recentApps 最近APP任务按键
执行条件:无障碍5.0以上或者手势执行为代理服务
最近APP任务按键
@return {null|布尔型}
function main(){
var result = recentApps();
if (result){
toast(“成功”);
} else {
toast(“失败”);
}
}
main();
getRunningPkg 当前运行的App包名
取得当前运行的App包名
@return {字符串|null}
function main(){
var result = getRunningPkg();
}
main();
getRunningActivity 当前运行的Activity类名
取得当前运行的Activity类名
@return {字符串|null}
function main(){
var result = getRunningActivity();
}
main();
通知栏
requestNotificationPermission 请求监听状态栏的权限
请求监听状态栏的权限
@param timeout 请求权限超时时间 单位是秒
@return true 代表请求权限成功,false代表失败
function main(){
var result = requestNotificationPermission(10);
toast(“是否有权限:”+result);
}
main();
hasNotificationPermission 是否有状态栏监听权限
检查是否含有状态栏监听权限
@return true 代表请求权限成功,false代表失败
function main(){
var result = hasNotificationPermission();
toast(“是否有权限:”+result);
}
main();
getLastNotification 获取最近通知栏对象
获取最近通知栏对象
@param pkg 指定包名
@param size 指定获取的条数
@return {NotificationInfo数组|null}
function main(){
var result = getLastNotification(“com.x”,100);
toast(“结果:”+result);
}
main();
getLastToast 获取toast数据
获取toast数据
@param pkg 指定包名
@param size 指定获取的条数
@return {null|ToastInfo数组}
function main(){
var result = getLastToast(“com.xx”,100);
toast(“结果:”+result);
}
main();
说明
设备模块函数
主要是跟设备信息相关联
设备模块的对象前缀是device,例如 device.getIMEI()这样调用
device.getIMEI() 获取IMEI
获取手机的IMEI
@return 字符串
device.getScreenWidth() 屏幕宽度
取得屏幕宽度
@return 整型
device.getScreenHeight() 屏幕高度
取得屏幕高度
@return 整型
device.getAndroidId() 取得Android ID
取得Android ID
@return 字符串
device.getBrand() 取得品牌
取得手机品牌
@return 字符串
device.getModel() 取得机型
取得手机机型
@return 字符串
device.getImsi() 取得卡号
取得手机卡号
@return 字符串
device.getSerial() 取得手机串号
取得手机串号
@return 字符串
device.getSdkInt() 取得安卓SDK 版本号.用来识别安卓版本
取得手机SDK 版本号,例如 23
@return 字符串
device.getOSVersion() 取得安卓版本号
取得手机版本号,例如 6.0等字符串
@return 字符串
device.getMacAddress() 获取mac地址
获取mac地址
@return 字符串
device.getBattery() 取得电量
取得电量
@return int型
device.getTotalMem() 取得总内存
取得总内存
@return long型
device.getAvailMem() 取得可用内存
取得可用内存
@return long型
device.isCharging() 是否正在充电
是否正在充电
@return 布尔型
device.vibrate(ms) 发出震动
发出震动 单位是毫秒
device.cancelVibration() 取消震动
取消震动
device.keepAwake() 保持设备唤醒
保持设备唤醒
@param flag 参考安卓PowerManager中的唤醒标准
function main(){
importClass(android.os.PowerManager)
device.keepAwake(PowerManager.SCREEN_DIM_WAKE_LOCK|PowerManager.ACQUIRE_CAUSES_WAKEUP);
}
main();
device.keepScreenOn 保持屏幕唤醒状态
保持屏幕唤醒状态
device.keepScreenDim() 保持设备昏暗状态
保持设备昏暗状态
function main(){
device.keepScreenDim();
}
main();
device.cancelKeepingAwake() 取消保持唤醒状态
取消保持唤醒状态
function main(){
device.cancelKeepingAwake();
}
main();
本文地址:https://blog.csdn.net/qq_30931547/article/details/108982846