autojs之通信

简介: 通信概念两个主体, 相互之间交换信息

通信概念


两个主体, 相互之间交换信息


autojs版本



主体概念


  • 同一个脚本
  • 多个脚本
  • 脚本和app
  • 脚本和服务器


通信方法


  • 文件读写
  • 本地存储 Storages
  • emitter
  • 脚本间广播 events.broadcast
  • 脚本引擎 ScriptEngine
  • 脚本引擎 engines.execScriptFile
  • 安卓广播
  • http


文件读写

let filePath = files.join(files.getSdcardPath(), "1.txt");
files.write(filePath, "hello world");
toastLog(files.read(filePath));


本地存储 Storages

var storage = storages.create("ABC");
storage.put("a", 123);
toastLog(storage.get("a"));


emitter

// 会打印2次 hello world
const myEE = events.emitter();
myEE.on("foo", (value) => {
  toastLog(value);
});
myEE.on("foo", (value) => {
  toastLog(value);
});
console.log(myEE.eventNames());
myEE.emit("foo", "hello world");


脚本间广播 events.broadcast

// 请牢记js是单线程, 3秒过后才会打印小明
events.broadcast.on("hello", function (name) {
  toastLog("你好, " + name);
});
events.broadcast.emit("hello", "小明");
//保持脚本运行
setInterval(() => {}, 1000);
for (var i = 0; i < 3; i++) {
  sleep(1000);
  log(i);
}


脚本引擎 ScriptEngine


向该脚本引擎发送一个事件,该事件可以在该脚本引擎对应的脚本的events模块监听到并在脚本主线程执行事件处理。


例如脚本receiver.js的内容如下:

//监听say事件
events.on("say", function(words){
  toastLog(words);
});
//保持脚本运行
setInterval(()=>{}, 1000);


同一目录另一脚本可以启动他并发送该事件:

//运行脚本
var e = engines.execScriptFile("./receiver.js");
//等待脚本启动
sleep(2000);
//向该脚本发送事件
e.getEngine().emit("say", "你好");


脚本引擎 engines.execScriptFile


demo.js

var args = engines.myEngine().execArgv;
let who = args.who;
toastLog(who);


启动demo.js并且带上参数


engines.execScriptFile("demo.js", { arguments: { who: "yashu" } });


安卓广播


注册广播

let receiver = new JavaAdapter(android.content.BroadcastReceiver, {
  onReceive: function (context, intent) {
    log(intent);
    switch (intent.action) {
      case Intent.ACTION_BATTERY_CHANGED:
        log("ACTION_BATTERY_CHANGED");
        let level = intent.getIntExtra("level", 0);
        toastLog("当前电量:" + level + "%");
        break;
      case "android.intent.action.yashu":
        toastLog("牙叔自定义广播");
        let value = intent.getStringExtra("author");
        log("接收到数据 author: " + value);
        break;
    }
  },
});
context.registerReceiver(receiver, filter);


发送广播

app.sendBroadcast({
  action: action,
  extras: {
    author: "yashu",
  },
});


http


get

console.show();
var r = http.get("www.baidu.com");
log("code = " + r.statusCode);
log("html = " + r.body.string());


post


一个模拟表单提交登录淘宝的例子如下:

var url = "https://login.taobao.com/member/login.jhtml";
var username = "你的用户名";
var password = "你的密码";
var res = http.post(url, {
    "TPL_username": username,
    "TPL_password": password
});
var html = res.body.string();
if(html.contains("页面跳转中")){
    toast("登录成功");
}else{
    toast("登录失败");
}






相关文章
|
Android开发
autojs之保活
autojs打包的app经常在后台被杀,请做到以下几点来保活: autojs版本号
2434 0
autojs之保活
|
人工智能 前端开发 Java
autojs非常见函数1
牙叔教程 简单易懂
2332 0
|
2月前
|
数据采集 搜索推荐 API
淘宝商品评论API接口全解析:从数据采集到情感分析
淘宝商品评论API是淘宝开放平台提供的数据服务,支持开发者获取商品的用户评论、评分、时间、多媒体信息等。接口具备筛选、分页和排序功能,适用于产品优化与市场分析。文章还附有Python调用示例,演示如何请求和解析评论数据。
|
小程序 开发者
微信小程序报错[ app.json 文件内容错误] app.json: app.json 未找到,一招解决
微信小程序报错[ app.json 文件内容错误] app.json: app.json 未找到,一招解决
4578 0
微信小程序报错[ app.json 文件内容错误] app.json: app.json 未找到,一招解决
|
JavaScript 网络协议 前端开发
【Nodejs】WebSocket 全面解析+实战演练——(Nodejs实现简易聊天室)
【Nodejs】WebSocket 全面解析+实战演练——(Nodejs实现简易聊天室)
815 0
|
12月前
|
数据采集 NoSQL 调度
flask celery python 每月定时任务
flask celery python 每月定时任务
【Web】forward 和 redirect 的区别
【Web】forward 和 redirect 的区别
|
10月前
|
人工智能 搜索推荐 大数据
【云故事探索】NO.11:福建紫讯——数字化转型的前行者
福建紫讯科技成立于2015年,致力于为跨境电商提供高效软件解决方案。通过整合大数据、云计算和AI,构建了完整的跨境电商生态系统。面对网络访问难题,紫讯优化了紫鸟浏览器,提升了用户体验,并借助阿里云的PAI框架,大幅降低了研发成本。未来,紫讯将继续深耕AI技术,提升卖家竞争力,并与阿里云深化合作,推动行业发展。
|
12月前
|
存储 JavaScript Java
深入浅出后端开发:从零到一的旅程
【9月更文挑战第10天】本文将带领读者走进后端开发的神秘世界,从基本概念到实战应用,一步步揭开后端技术的面纱。通过浅显易懂的语言和实际代码示例,我们将探索如何搭建一个简单的后端服务,理解数据库交互,并实现API的基本功能。无论你是编程新手还是希望扩展知识的开发者,这篇文章都将为你提供一条清晰的学习路径。