panchengyong
10 days ago b2d3f7caf927e5b83ec52efb74f1f818dbb15236
rpa/libs/uilayout.js
@@ -18,7 +18,7 @@
/**
 * 读取IEC包中的res文件夹某个文件资源,并变成android的Bitmap对象返回
 * @param path res文件夹中的资源文件路径
 * @return Bitmap 图像对象或者null
 * @return {null|Bitmap} 图像对象或者null
 */
UIWrapper.prototype.resResAsBitmap = function (path) {
    if (uiWrapper == null) {
@@ -29,7 +29,7 @@
/**
 * 读取IEC包中的res文件夹某个文件资源,并变成android的Drawable对象返回
 * @param path res文件夹中的资源文件路径
 * @return Drawable 图像对象或者null
 * @return {null|Drawable} 图像对象或者null
 */
UIWrapper.prototype.resResAsDrawable = function (path) {
    if (uiWrapper == null) {
@@ -42,7 +42,6 @@
/**
 * 调试日志打印
 * @param msg 打印的消息
 * @return {null}
 */
UIWrapper.prototype.logd = function (msg) {
    if (uiWrapper == null) {
@@ -99,7 +98,7 @@
 * 创建一个布局并设置到当前的页面中
 * @param name tab标签的名称
 * @param content 可以是layout文件夹中的文件名称,也可以直接是xml文件的内容
 * @return 布尔型 true代表成功, false代表失败
 * @return {boolean} true代表成功, false代表失败
 */
UIWrapper.prototype.layout = function (name, content) {
    if (uiWrapper == null) {
@@ -114,7 +113,7 @@
/**
 * 解析布局并返回
 * @param content 可以是layout文件夹中的文件名称,也可以直接是xml文件的内容
 * @return View android的View对象,解析有问题就是null
 * @return {null|View} android的View对象,解析有问题就是null
 */
UIWrapper.prototype.parseView = function (content) {
    if (uiWrapper == null) {
@@ -127,7 +126,7 @@
/**
 * 通过tag查找到一个视图
 * @param tag 标签值
 * @return View android原生的View对象
 * @return {null|View} android原生的View对象
 */
UIWrapper.prototype.findViewByTag = function (tag) {
    if (uiWrapper == null) {
@@ -140,7 +139,7 @@
 * @param view 要设置事件的视图,可以是事件的tag值
 * @param eventType 时间类型: click:点击,checkedChange:单选和多选按钮的选中状态改变事件,itemClick:列表的项目点击,itemSelected:列表的项目选中
 * @param eventCallback 事件回调函数
 * @return 布尔型 true代表设置成功, false代表设置失败
 * @return {boolean} true代表设置成功, false代表设置失败
 */
UIWrapper.prototype.setEvent = function (view, eventType, eventCallback) {
    if (uiWrapper == null || view == null) {
@@ -172,7 +171,7 @@
 * 存储数据到存储区中,脚本可以使用
 * @param key 键
 * @param value 值
 * @return 布尔型 true成功 false失败
 * @return {boolean} true成功 false失败
 */
UIWrapper.prototype.putShareData = function (key, value) {
    return uiWrapper.putShareData2(key, value);
@@ -180,7 +179,7 @@
/**
 * 从存储区获取在UI模块存储的数据
 * @param key 键
 * @return 存储的数据
 * @return {null|*} 存储的数据
 */
UIWrapper.prototype.getShareData = function (key) {
    return uiWrapper.getShareData2(key);
@@ -188,14 +187,13 @@
/**
 * 清理所有存储区的数据
 * @return true 或者 false
 * @return {boolean} true 或者 false
 */
UIWrapper.prototype.clearAllShareData = function () {
    return uiWrapper.clearAllShareData();
}
/**
 * 将所有的tag转换成UI的对象直接调用
 * @return {null}
 */
UIWrapper.prototype.resetUIVar = function () {
    if (this.getActivity() == null) {
@@ -215,7 +213,7 @@
/**
 * 取得当前的activity对象
 * @return Activity 对象或者null
 * @return {null|Activity} 对象或者null
 */
UIWrapper.prototype.getActivity = function () {
    if (uiWrapper == null) {
@@ -223,6 +221,10 @@
    }
    return uiWrapper.getActivity();
};
/**
 *
 * @return {null|Context}
 */
UIWrapper.prototype.getContext = function () {
    if (uiWrapper == null) {
        return null;
@@ -231,7 +233,7 @@
};
/**
 * 取得当前的Handler对象
 * @return Handler 对象或者null
 * @return {null|Handler} 对象或者null
 */
UIWrapper.prototype.getHandler = function () {
    if (uiWrapper == null) {
@@ -242,7 +244,7 @@
/**
 * 取得当前的根视图对象,因为有可能是多标签的页面,返回的有可能是个集合
 * @return View 对象列表
 * @return {null|View[]} 对象列表
 */
UIWrapper.prototype.getRootView = function () {
    if (uiWrapper == null) {
@@ -262,7 +264,7 @@
/**
 * 启动脚本
 * @return 布尔型 true代表成功  false代表失败
 * @return {boolean} true代表成功  false代表失败
 */
UIWrapper.prototype.start = function () {
    if (uiWrapper == null) {
@@ -273,7 +275,7 @@
/**
 * 是否有浮窗权限
 * @return 布尔型 true代表有权限 false代表无权限
 * @return {boolean} true代表有权限 false代表无权限
 */
UIWrapper.prototype.hasFloatViewPermission = function () {
    if (uiWrapper == null) {
@@ -287,7 +289,7 @@
 * 异步请求浮窗权限
 * @param timeout 超时时间
 * @param callback 回调函数
 * @return 布尔型 true代表有权限 false代表无权限
 * @return {boolean} true代表有权限 false代表无权限
 */
UIWrapper.prototype.requestFloatViewPermissionAsync = function (timeout, callback) {
    if (uiWrapper == null) {
@@ -297,7 +299,7 @@
};
/**
 * 取得所有UI配置
 * @return JSON字符串
 * @return {null|string} JSON字符串
 */
UIWrapper.prototype.getConfigJSON = function () {
    if (uiWrapper == null) {
@@ -308,7 +310,7 @@
/**
 * 取得单个UI配置项
 * @param key 配置的key
 * @return 字符串
 * @return {null|string} 字符串
 */
UIWrapper.prototype.getConfig = function (key) {
    if (uiWrapper == null) {
@@ -318,7 +320,7 @@
};
/**
 * 打开EC的系统设置
 * @return 布尔型 true代表成功 false代表失败
 * @return {boolean} true代表成功 false代表失败
 */
UIWrapper.prototype.openECSystemSetting = function () {
    if (uiWrapper == null) {
@@ -330,7 +332,7 @@
 * 保存UI参数值
 * @param key UI的key
 * @param value UI的值
 * @return 布尔型 true代表成功 false代表失败
 * @return {boolean} true代表成功 false代表失败
 */
UIWrapper.prototype.saveConfig = function (key, value) {
    if (uiWrapper == null) {
@@ -340,7 +342,7 @@
};
/**
 * 移出所有保存的UI参数值
 * @return 布尔型 true代表成功 false代表失败
 * @return {boolean} true代表成功 false代表失败
 */
UIWrapper.prototype.removeAllUIConfig = function () {
    if (uiWrapper == null) {
@@ -352,7 +354,7 @@
/**
 * 根据设置的tag,保存所有配置
 * @return 布尔型 true 保存成功,false 保存失败
 * @return {boolean} true 保存成功,false 保存失败
 */
UIWrapper.prototype.saveAllConfig = function () {
    if (uiWrapper == null) {
@@ -364,7 +366,7 @@
 * 设置视图的值
 * @param tagOrView 视图的tag或者视图对象
 * @param value 值,字符串或者是布尔型
 * @return 布尔型 true代表成功 false代表失败
 * @return {boolean} true代表成功 false代表失败
 */
UIWrapper.prototype.setViewValue = function (tagOrView, value) {
    if (uiWrapper == null) {
@@ -375,7 +377,7 @@
/**
 * 取得视图的值
 * @param tagOrView 视图的tag或者视图对象
 * @return 字符串或者布尔型
 * @return {null|boolean|string|number|*} 字符串或者布尔型
 */
UIWrapper.prototype.getViewValue = function (tagOrView) {
    if (uiWrapper == null) {
@@ -409,7 +411,7 @@
/**
 * 是否是无障碍运行模式
 * @return 布尔型 true 是 false 否
 * @return {boolean} true 是 false 否
 */
UIWrapper.prototype.isAccMode = function () {
    if (uiWrapper == null) {
@@ -419,7 +421,7 @@
};
/**
 * 是否是代理运行模式
 * @return 布尔型 true 是 false 否
 * @return {boolean} true 是 false 否
 */
UIWrapper.prototype.isAgentMode = function () {
    if (uiWrapper == null) {
@@ -429,7 +431,7 @@
};
/**
 * 自动化服务是否正常
 * @return 布尔型 true 是 false 否
 * @return {boolean} true 是 false 否
 */
UIWrapper.prototype.isServiceOk = function () {
    if (uiWrapper == null) {
@@ -440,7 +442,7 @@
/**
 * 设置运行模式
 * @param mode 1 代表是代理模式  2 代表无障碍模式
 * @return 布尔型 true 是 false 否
 * @return {boolean} true 是 false 否
 */
UIWrapper.prototype.setRunningMode = function (mode) {
    if (uiWrapper == null) {
@@ -471,7 +473,7 @@
 *  log_float_window : 日志悬浮窗展示 值有 是,否 两种
 *  ctrl_float_window : 启停控制悬浮窗展示 值有 是,否 两种
 *
 * @return 布尔型 true 是 false 否
 * @return {boolean} true 是 false 否
 */
UIWrapper.prototype.setECSystemConfig = function (params) {
    if (uiWrapper == null) {
@@ -483,7 +485,7 @@
/**
 * 启动环境
 * @return 布尔型 true代表启动成功,false代表启动失败
 * @return {boolean} true代表启动成功,false代表启动失败
 */
UIWrapper.prototype.startEnv = function () {
    if (uiWrapper == null) {
@@ -494,11 +496,28 @@
/**
 * 设置代理模式下获取节点方式
 * 该方法仅对代理模式生效
 * 该方法在启动代理服务之前调用,使用2和3 可以减少检测的特征
 * 1的方式会出现 ruru检测出 AccessibilityManager.isEnabled,2和其他的方式不会出现
 * 1的方式节点能力交强,2节点功能较弱,0和3 就没有节点功能
 * @param support 1 类似无障碍一样的方式, 2 shell dump的的方式,3或者0 不开启节点服务
 * @return {boolean} true
 */
UIWrapper.prototype.setAgentSupportNode = function (support) {
    if (uiWrapper == null) {
        return null;
    }
    return uiWrapper.setAgentSupportNode(support+"");
};
/**
 * 开启一个定时任务
 * @param tag
 * @param execTime 定时时间格式: 2020-04-17 19:20:00,或者直接是秒数字,例如 3,代表3秒后
 * @param cancelBeforeRunning 是否取消之前的任务
 * @return 整型 jobid
 * @return {number} jobid
 */
UIWrapper.prototype.startJob = function (tag, execTime, cancelBeforeRunning) {
    if (uiWrapper == null) {
@@ -508,7 +527,7 @@
};
/**
 * 取消所有的定时任务
 * @return 布尔型 true代表成功,false代表失败
 * @return {boolean} true代表成功,false代表失败
 */
UIWrapper.prototype.cancelAllJob = function () {
    if (uiWrapper == null) {
@@ -519,7 +538,7 @@
/**
 * 取消指定标签的任务
 * @param tag 标签
 * @return 布尔型 true代表成功,false代表失败
 * @return {boolean} true代表成功,false代表失败
 */
UIWrapper.prototype.cancelJob = function (tag) {
    if (uiWrapper == null) {
@@ -529,7 +548,7 @@
};
/**
 * 获取所有定时任务TAG
 * @return JSON字符串
 * @return {null|string} JSON字符串
 */
UIWrapper.prototype.getAllJobTag = function () {
    if (uiWrapper == null) {
@@ -539,7 +558,7 @@
};
/**
 * 停止当前运行的测试任务
 * @return 布尔型 true代表成功,false代表失败
 * @return {boolean} true代表成功,false代表失败
 */
UIWrapper.prototype.stopTask = function () {
    if (uiWrapper == null) {
@@ -549,7 +568,7 @@
};
/**
 * 显示日志浮窗
 * @return 布尔型 true代表成功,false代表失败
 * @return {boolean} true代表成功,false代表失败
 */
UIWrapper.prototype.showLogWindow = function () {
    if (uiWrapper == null) {
@@ -561,7 +580,7 @@
/**
 * 关闭日志浮窗
 * @return 布尔型 true代表成功,false代表失败
 * @return {boolean} true代表成功,false代表失败
 */
UIWrapper.prototype.closeLogWindow = function () {
    if (uiWrapper == null) {
@@ -579,7 +598,7 @@
 * @param height 按钮的高度,单位是dp,系统按钮是36
 * @param index 按钮的加入索引,-1代表往后添加,0代表的是加入到第一位
 * @param onClickListener 按钮的点击回调
 * @return 布尔型 true代表成功,false代表失败
 * @return {boolean} true代表成功,false代表失败
 */
UIWrapper.prototype.addCtrlView = function (tag, icon, width, height, index, onClickListener) {
    if (uiWrapper == null) {
@@ -594,7 +613,7 @@
 * @param tag 按钮的标签
 * @param icon 按钮的图标路径,工程中的res/文件下的图片,例如填写 res/a.png
 * @param onClickListener 按钮的点击回调
 * @return 布尔型 true代表成功,false代表失败
 * @return {boolean} true代表成功,false代表失败
 */
UIWrapper.prototype.updateCtrlView = function (tag, icon, onClickListener) {
    if (uiWrapper == null) {
@@ -606,7 +625,7 @@
/**
 * 删除启停浮窗按钮
 * @param tag 按钮的标签,默认都有main_page_ctrl: 主页,log_window_ctrl:日志窗口控制,script_status_ctrl:脚本启停,log_close_ctrl: 日志框关闭
 * @return 布尔型 true代表成功,false代表失败
 * @return {boolean} true代表成功,false代表失败
 */
UIWrapper.prototype.removeCtrlView = function (tag) {
    if (uiWrapper == null) {
@@ -617,7 +636,7 @@
/**
 * 删除所有启停浮窗按钮
 * @return 布尔型 true代表成功,false代表失败
 * @return {boolean} true代表成功,false代表失败
 */
UIWrapper.prototype.removeAllCtrlView = function () {
    if (uiWrapper == null) {
@@ -627,7 +646,7 @@
};
/**
 * 重置启停浮窗按钮
 * @return 布尔型 true代表成功,false代表失败
 * @return {boolean} true代表成功,false代表失败
 */
UIWrapper.prototype.resetDefaultCtrlView = function () {
    if (uiWrapper == null) {
@@ -638,7 +657,7 @@
/**
 * 显示启停浮窗
 * @return 布尔型 true代表成功,false代表失败
 * @return {boolean} true代表成功,false代表失败
 */
UIWrapper.prototype.showCtrlWindow = function () {
    if (uiWrapper == null) {
@@ -648,7 +667,7 @@
};
/**
 * 关闭启停浮窗
 * @return 布尔型 true代表成功,false代表失败
 * @return {boolean} true代表成功,false代表失败
 */
UIWrapper.prototype.closeCtrlWindow = function () {
    if (uiWrapper == null) {
@@ -691,7 +710,7 @@
 * @param map 例如{"action":""},key的固定只有
 * action,
 * uri,pkg,className,flag,其他的都是参数了
 * @return 布尔型 true 代表成功,false 代表失败
 * @return {boolean} true 代表成功,false 代表失败
 */
UIWrapper.prototype.openActivity = function (map) {
    if (uiWrapper == null) {
@@ -712,7 +731,7 @@
 * @param okBtnCallback 点击确认按钮的回调
 * @param cancelBtnCallback 点击取消按钮的回调
 * @param dismissListener 对话框消失的回调
 * @return 布尔型 true 代表成功,false 代表失败
 * @return {boolean} true 代表成功,false 代表失败
 */
UIWrapper.prototype.alert = function (map, okBtnCallback, cancelBtnCallback, dismissListener) {
    if (uiWrapper == null) {
@@ -733,7 +752,7 @@
 * @param okBtnCallback 点击确认按钮的回调
 * @param cancelBtnCallback 点击取消按钮的回调
 * @param dismissListener 对话框消失的回调
 * @return 布尔型 true 代表成功,false 代表失败
 * @return {boolean} true 代表成功,false 代表失败
 */
UIWrapper.prototype.inputDialog = function (map, okBtnCallback, cancelBtnCallback, dismissListener) {
    if (uiWrapper == null) {
@@ -751,7 +770,7 @@
 * @param view 原生的视图
 * @param onViewBind 视图绑定时候回调函数
 * @param dismissListener 对话框消失的回调
 * @return 布尔型 true 代表成功,false 代表失败
 * @return {boolean} true 代表成功,false 代表失败
 */
UIWrapper.prototype.customDialog = function (params, view, onViewBind, dismissListener) {
    if (uiWrapper == null) {
@@ -776,7 +795,7 @@
 * 向网页中注入一个JS函数,H5可以调用该函数,以实现脚本和HTML的互通扩展
 * @param funcName 注入的函数名称
 * @param callback 回调
 * @return 布尔型 true 代表成功,false 代表失败
 * @return {boolean} true 代表成功,false 代表失败
 */
UIWrapper.prototype.registeH5Function = function (funcName, callback) {
    if (uiWrapper == null) {
@@ -789,7 +808,7 @@
/**
 * 取消向网页中注入一个JS函数
 * @param funcName 注入的函数名称
 * @return 布尔型 true 代表成功,false 代表失败
 * @return {boolean} true 代表成功,false 代表失败
 */
UIWrapper.prototype.unregisteH5Function = function (funcName) {
    if (uiWrapper == null) {
@@ -802,7 +821,7 @@
/**
 * 设置加载网页的webview组件组件类型,默认是X5浏览器
 * @param type 1:系统自带的webview, 2:X5浏览器
 * @return 布尔型 true 代表成功,false 代表失败
 * @return {boolean} true 代表成功,false 代表失败
 */
UIWrapper.prototype.setWebViewType = function (type) {
    if (uiWrapper == null) {
@@ -813,7 +832,7 @@
/**
 * 脚本是否正在运行
 * @return 布尔型 true 代表成功,false 代表失败
 * @return {boolean} true 代表成功,false 代表失败
 */
UIWrapper.prototype.isScriptRunning = function () {
    if (uiWrapper == null) {