HTML5-UI

说明

EasyClick 使用WebView支撑HTML的UI方式,并且扩展了JS方法,用于控制EC程序。
新建工程时候可以对应的模板,推荐使用Materialize模板,文档网址
也可以自己编写精美的HTML页面,更多JS方法的使用请参考模板中的用法

WEB UI 推荐

链接说明
jQuery WeUI基于WeUI二开的
WeUI +基于Zepto1.2和weui1.13
WeUI微信官方设计团队

多tab标签支持

只要在工程的layout工程下新建一个ui.js文件即可 内容是

ui.layout("参数配置","main.html"); ui.layout("注册使用","reg.html"); ui.layout("使用说明","intr.html");

脚本如何与JS交互

编写html视图
使用webview加载本地的main.html
加载 html
在ui.js中加载html视图

ui.layout("参数配置","main.html");

main.html 代码

<!doctype html> <html lang="en"> <head> <!-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> </head> <body style="margin-left: 10px;margin-right: 10px"> 我是测试网页 </body> <script> //暴露给webview调用 function myalert() { alert("fdsafsad"); //存储数据到内存中,给脚本读取 window.ec.putShareData("mymsg","我是网页的临时数据"); } //暴露给webview调用 带参数 function myalert(msg) { alert("我是msg "+msg); } </script> </html>

在js/main.js脚本中调用视图

function main() { //重置变量 ui.resetUIVar(); //读取UI存储到内存中的数据 logd(ui.getShareData("mymsg")) logd(ui.web) //使用ui中 tag= web的视图 if (ui.web) { //myalert 是HTML中暴露的方法 //执行网页中的js方法 ui.web.quickCallJs("myalert();"); ui.web.quickCallJs("myalert('bbbbb');"); } } main();

扩展方法

浏览器扩展的方法,主要用于网页和EC程序进行交互,并且这些方法只能在网页中调用才行

ui.registeH5Function()

在ui.js中注入扩展函数,供html内调用

@param funcName 注入的函数名称
@param data 可以是普通的字符串,也可以是JSON的字符串
@return {string} 调用的扩展函数返回的数据

// ui.js中的注入 function main() { //UI中进行注入新的扩展 ui.registeH5Function("customFunction",function(data){ logd("h5 call-> "+data); //返回给网页的数据 return new Date().toString() }) ui.layout("main", "main.html"); } main();

window.ec.call()

网页中调用ui.js中通过ui.registeH5Function()注入的扩展函数

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <button onclick="test()">测试扩展函数</button> <script> function test(){ //调用ui.js注入进来的扩展 let d =window.ec.call('customFunction',JSON.stringify({'action':'android.settings.SETTINGS'})); console.log("ddd "+d ) } </script> </body> </html>

启动脚本

window.ec.start()

停止脚本

window.ec.stopTask()

隐藏开始按钮

window.ec.hideStartBtn()

显示开始按钮

window.ec.displayStartBtn()

获取所有配置的JSON字符串

var s= window.ec.getConfigJSON(); alert(s);

从配置文件获取单个配置的字符串

var s= window.ec.getConfig("name"); alert(s);

保存单个配置到配置文件

var s= window.ec.saveConfig("name","123"); alert(s);

保存数据到存储区

这个数据是保存在内存中的

window.ec.putShareData("name","123");

从存储区读取数据

这个数据是在内存中的

var d = window.ec.getShareData("name"); alert(d);

清空存储区数据

这个数据是在内存中的

var d = window.ec.clearAllShareData(); alert(d);

打开EC的系统设置

window.ec.openECSystemSetting()

保存EC的系统参数

设置EC的系统参数
@param params map形式例如 {“running_mode”:“无障碍”},
{
“running_mode”:“无障碍”,
“auto_start_service”:“是”,
“log_float_window”:“否”,
“ctrl_float_window”:“否”
“service_start_run_script”:“否”
}
参数解释有:

  • running_mode : 无障碍,代理两种
  • auto_start_service : 开机启动服务 值有 是,否 两种
  • log_float_window : 日志悬浮窗展示 值有 是,否 两种
  • ctrl_float_window : 启停控制悬浮窗展示 值有 是,否 两种
  • service_start_run_script : 服务被重启后自动重新运行 值有 是,否 两种
  • home_key_start_stop : 三击HOME启停脚本 值有 是,否 两种 *

@return 布尔型 true 是 false 否

var m = { "running_mode":"无障碍", "auto_start_service":"是", "log_float_window":"否", "ctrl_float_window":"否" }; window.ec.setECSystemConfig(JSON.stringify(m));

window.ec.logd()

显示日志消息

window.ec.logd("我是日志");

显示Toast消息

window.ec.toast("我是toast消息") ;

显示日志消息窗口

window.ec.showLogWindow();

关闭日志消息窗口

window.ec.closeLogWindow();

显示启停控制窗口

window.ec.showCtrlWindow();

关闭启停控制窗口

window.ec.closeCtrlWindow();

打开其他应用程序 openActivity

//打开浏览器下载测试 var m ={ "action":"android.intent.action.VIEW", "uri":"https://imtt.dd.qq.com/16891/apk/55259F8EF9824AF1BF80106B0E00BCD1.apk?" }; var x = window.ec.openActivity(JSON.stringify(m)); window.ec.logd("x "+x); var map={ "uri":"xx://xx/live/6701887916223941379", }; window.ec.openActivity(JSON.stringify(map));

服务状态

是否是无障碍服务模式

var s = window.ec.isAccMode(); alert(s);

是否是代理服务模式

var s = window.ec.isAgentMode(); alert(s);

无障碍服务是否已经启动

var s = window.ec.isAccServiceOk(); alert(s);

代理服务是否已经启动

var s = window.ec.isAgentServiceOk(); alert(s);

启动服务环境

var s = window.ec.startEnv(); alert(s);

悬浮窗

window.ec.hasFloatViewPermission()是否有悬浮窗权限

var s = window.ec.hasFloatViewPermission(); alert(s);

window.ec.requestFloatViewPermission()

请求悬浮窗权限

//参数是超时时间,单位是秒 var s = window.ec.requestFloatViewPermission(10); alert(s);

window.ec.showFloatView()

展示浮窗

var m = { "path": "main.html", "tag": "tag", "titleBg": "#888888", "x": 10, "y": 10, "w": 100, "h": 200 }; var xd =window.ec.showFloatView(JSON.stringify(m)); alert(xd);

window.ec.closeFloatView()

关闭浮窗

var m = { "path": "main.html", "tag": "tag", "titleBg": "#888888", "x": 10, "y": 10, "w": 100, "h": 200 }; var xd =window.ec.showFloatView(JSON.stringify(m)); setTimeout(function() { window.ec.closeFloatView("tag"); },3000); alert(xd);

window.ec.closeAllFloatView()

关闭所有浮窗,不包含日志悬浮窗

var m = { "path": "main.html", "tag": "tag", "titleBg": "#888888", "x": 10, "y": 10, "w": 100, "h": 200 }; var xd =window.ec.showFloatView(JSON.stringify(m)); setTimeout(function() { window.ec.closeAllFloatView(); },3000); alert(xd);

定时任务

window.ec.startJob()

开启一个定时脚本任务

@param tag 任务的唯一标示,不能为空,脚本中可以使用readConfigString(“jobTaskTag”)获取当前tag值,判断是那个任务过来执行的
@param execTime 定时时间格式: 2020-04-17 192000,或者直接是秒数字,例如 3,代表3秒后
@param cancelBeforeRunning
@return 整型 jobid

var time="2020-04-17 09:00:00"; var id =window.ec.startJob("task1",time,true); alert("job id "+id);

window.ec.getAllJobTag()

获取所有定时任务TAG

var t =window.ec.getAllJobTag(); alert("job tags "+t);

window.ec.cancelAllJob()

取消所有定时任务

var t =window.ec.cancelAllJob(); alert("job cancel "+t);

window.ec.cancelJob()

取消指定TAG定时任务

//参数task1 是创建定时任务的tag值 var t =window.ec.cancelJob("task1"); alert("job cancel "+t);