# 打印
在输入窗口和控制台输出一段信息
# 打印一段文本
print("HellWorld 节点精灵") --打印一段文本
1
# 打印一个table
local a = {"1",2}
print(a) --打印一个table 会将a 格式化为json 后输出
1
2
2
# 用指定颜色打印文本
目前该方法只会影响手机 log框中的颜色。 (!编辑器的输入窗口不解析颜色)
print("我会变色哦","#19C989") --打印一段文本,指定这段文本为 "#19C989" 色(rgb颜色,可以用取色器获取)
1
# 睡眠
让程序暂停一段时间
sleep(1000) --单位毫秒
1
# 获取系统时间
获取系统 时间戳 毫秒值
local t = time() --获取 毫秒时间戳
1
# 吐司提示
在界面上提示一段文字
toast("要显示的文本")
1
-- 显示5秒
toast("要显示的文本",5000)
1
2
2
-- 显示5秒,并且 在 x=100, y =100 的位置显示
toast("要显示的文本",5000,100,100)
1
2
2
-- 显示5秒,并且 在 x 方向居中,y 方向居中的位置显示
toast("要显示的文本",5000,-2,-2)
1
2
2
# 启动应用
在设备上显示控制台
-- 参数为 App应用包名(可在节点精灵设置里查找)
-- 启动 节点精灵
runApp("com.freespace.aplug")
1
2
3
2
3
# 用默认浏览器打开网页
在设备上显示控制台
-- 参数为 App应用包名(可在节点精灵设置里查找)
-- 用默认浏览器打开百度地址
runWeb("http://www.baidu.com");
1
2
3
2
3
# 语音播报
将一段文本朗读出来
-- 朗读 生硬
talk("我是系统朗读的声音")
1
2
2
# 震动
让设备震动一段时间
-- 震动2秒
vibrate(2*1000)
-- 脚本停止后会自动停止震动
-- 因此 震动开启后,可在适当情况下加sleep睡眠函数,别让程序那么早停止。
sleep(2000)
1
2
3
4
5
2
3
4
5
# 播放音频
让设备播放音频文件
-- 播放和mian.lua 文件同级下的 1.mp3 文件
local path = getDir()..'/1.mp3';
playAudio(path);
-- 脚本结束后会自动停止播放
sleep(5000);
1
2
3
4
5
2
3
4
5
# 获取屏幕分辨率
s = getScreen();
if s then
--横竖屏切换后,宽高自动转换
print(s.width);-- 屏幕宽度
print(s.height)-- 屏幕高度
end
1
2
3
4
5
6
2
3
4
5
6
# 强制停止脚本
exit();
1
# 获取手机唯一id
pid = getPhoneId();
print(pid);
1
2
2
# 获取手机信息
msg = getPhoneMsg();
print(msg.brand);--品牌
print(msg.model);--型号
print(msg.sdk) --android sdk版本
print(msg.version) --版本号
1
2
3
4
5
2
3
4
5
# 获取App 信息
-- 通过包名查看应用信息
a = getAppinfo('com.freespace.aplug')
print(a.versionCode); -- 版本号
print(a.versionName); -- 版本名称
print(a.name); -- 应用名称
1
2
3
4
5
6
2
3
4
5
6
# 执行 Root指令(需Root)
Root 指令,可运行 ADB 指令
exec("...") -- 应用包名 可用节点精灵App查看
1
exec 指令回返回一个table {"error":[],"result":[],"data":"..."}
- error: 如果执行命令有误,则再此字段中返回
- result: 如果执行命令有返回结果,则在此字段中返回
- data:执行的命令语句
# 强制停止应用
exec("am force-stop 应用包名") -- 应用包名 可用节点精灵App查看
1
# 强制修改设备分辨率
exec("wm size 720x720") -- 强改分辨率 为 720*720
1
# 恢复设备分辨率
exec("wm size reset") -- 恢复分辨率至原厂
1
# 强制修改 屏幕密度(dpi)
exec("wm density 160") -- 修改屏幕密度为160dp
1
# 恢复屏幕密度(dpi)
exec("wm density reset"); -- 恢复屏幕密度
1
# 重启设备
exec('reboot'); -- 重启设备
1
# 清除 指定包名所属应用的缓存
local pk = "com.aojoy.aplug";
exec('pm clear '..pk); -- 清空指定应用的缓存
1
2
2
# 下载并静默安装应用
function rootInstall(uri)
if string.find(uri, "http", 1)==1 then
path = "sdcard/1001/"..time()..'.apk' -- path 为要下载的目录
isSuccess = httpDownload(path,uri);
if isSuccess then
return exec('pm install -r '..path)
end
end
return nil;
end
rootInstall("apk的http下载地址");
-- 成功后会返回指令结果,安装失败会返回nil
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 卸载APP(静默卸载)
local pk = "com.aojoy.aplug";
exec('pm uninstall '..pk) -- pk为指定的包名
1
2
2
# 修改android_id
-- 这是一个生成随机码的方法a-z+0-9
function Rnd_Number_And_Letter(num)
local key='abcdefghijklmnopqrstuvwxyz0123456789'
local str=""
local x = 1
for i=1,num,1 do
x = math.random(1,36)
str = str..string.sub(key, x, x)
end
return str
end
local nid = Rnd_Number_And_Letter(16); --生成16位随机码
exec('settings put secure android_id '..nid) -- pk为指定的包名
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 获取android_id
local res = exec('content query --uri content://settings/secure --where "name=\'android_id\'"');
print(res);
1
2
2
# 更多指令
请 百度搜索"adb 指令"
# 意图 Intent
增加intent 意图跳转 可通过意图跳转至任一界面 例:权限界面 例:抖音指定界面 例:用浏览器下载文件 例:拨打电话 例:进入通讯录 例:播放多媒体指定文件 例:打开地图,显示经纬度
# 意图构建
意图 为一个table intent = {}; 其中包含 action,uri,packageName,data,extra (可组合使用)
i ={};
-- android 配置的action 选项, 通常和uri 配合使用
i['action'] = "android.intent.action.VIEW";
-- uri 通常用作协议跳转
i['uri'] = "http://www.baidu.com";
-- data 额外增加的数据
i['data'] ="";
-- packageName 通常指 要跳转的包名
i['packageName'] = "";
-- classname 通常指 具体要跳转的activity
i['classname'] = "";
-- category 指定当前动作(Action)被执行的环境
i['category'] = {"CATEGORY_DEFAULT","..."};
-- CATEGORY_DEFAULT:Android系统中默认的执行方式,按照普通Activity的执行方式执行。表示所有intent都可以激活它
-- CATEGORY_HOME:设置该组件为Home Activity。
-- CATEGORY_PREFERENCE:设置该组件为Preference。
-- CATEGORY_LAUNCHER:设置该组件为在当前应用程序启动器中优先级最高的Activity,通常为入口ACTION_MAIN配合使用。
-- CATEGORY_BROWSABLE:设置该组件可以使用浏览器启动。表示该activity只能用来浏览网页。
-- CATEGORY_GADGET:设置该组件可以内嵌到另外的Activity中。
-- extra 为额外增加的 参数:具体使用请百度(该部分涉及到Android intent 知识)
i['extra'] = {};
i['extra']["test"] = true;
i['extra']["test2"] = "2";
i['extra']["test3"] = 3;
runIntent(i);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 意图插件
感谢作者 暂无-
# 发送邮件
可发送邮件 往任意邮箱
maii = {
smtp = "smtp.qq.com",
port = "465",
from = "xxxxx@qq.com",
password = "qpglnpwkuaaebibe",
to = {"xxxx@163.com"},
subject = "MailSender",
content = "MailSender Android快速实现发送邮件77777",
files = {'sdcard/history.s'}
}
sendMail(maii)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
- smtp "可前往对应的邮箱 查看配置的smtp 服务器地址"
- port 在对应邮箱配置查看
- form 使用的发送邮件账号
- password 邮箱授权码!(不是密码!) QQ邮箱授权码获取:https://jingyan.baidu.com/article/6079ad0eb14aaa28fe86db5a.html
- to 要发送邮件到哪个邮箱
- subject 邮件标题,title
- content 邮件内容
- files 附件文件 多个请用数组形式传递
# 强制刷新节点
refreshLayout()
1
2
2
部分手机,某些界面节点不刷新,可使用该方法强制刷新节点
# 获取已安装App信息
getApps() 通过该方法可以获取到设备上安装的所有App的信息
local apps = getApps();
for k,v in pairs(apps) do
print(v.appName) -- app 名称
print(v.appSize) -- app 大小
print(v.isSystem) -- 是否为系统App
print(v.appPackageName) -- app 包名
print('-----------------------------')
end
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 获取本地ip地址
local ip = getLocalIp();
print(ip)
1
2
3
4
2
3
4
# 保存图片至相册
-- 将一个网络图片保存至系统相册
保存后相册地址 = picture2Gallery("http://www.nspirit.cn/hero.png");
print(保存后相册地址);
-- 将一个本地图片保存在相册
local picAddress = getDirSD().."/123.jpg";
保存后相册地址 = picture2Gallery(picAddress);
print(保存后相册地址);
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 重启脚本
调用此方法后,辅助会一秒后会重启。
reStart();
1