autojs非常见函数2

简介: autojs非常见函数2

启动app

launchPackage("com.tencent.mobileqq")
function launchPackage(str) {
    try {
        intent = context.getPackageManager().getLaunchIntentForPackage(str).setPackage(null);
        context.startActivity(intent.addFlags(0x10000000));
        return true;
    } catch (unused) {
        return false;
    }
}


http put

http
  .request(url, {
    method: "PUT",
    body: JSON.stringify({
      access_token: access_token,
      content: android.util.Base64.encodeToString(files.readBytes(path), 2),
      sha: fileinfo.sha,
      message: "更新文件",
    }),
    headers: {
      "Content-Type": "application/json;charset=UTF-8",
    },
  })
  .body.json();


禁止重定向

  http.__okhttp__.muteClient(Packages.okhttp3.OkHttpClient.Builder().followRedirects(false));


提取响应Cookie

function getCookies(url) {
  let res = http.get(url);
  let rCookies = res.headers["Set-Cookie"];
  let cookiesArr = [];
  rCookies.forEach((item) => {
    cookiesArr.push(item.split(";")[0]);
  });
  let cookies = cookiesArr.join("; ");
  return cookies;
}
// 设置请求头cookie
headers["Cookie"] = response.headers["Set-Cookie"];


解压响应为gzip压缩的数据

function unzipGzipBytes(gzipBytes) {
  importClass(java.io.FileInputStream);
  importClass(java.util.zip.GZIPInputStream);
  importClass("java.io.FileOutputStream");
  var tempPath = files.join(files.cwd(), "./tempPath.txt");
  files.createWithDirs(tempPath);
  files.writeBytes(tempPath, gzipBytes);
  var tempPath2 = files.join(files.cwd(), "./tempPath2.txt");
  files.createWithDirs(tempPath2);
  var sChunk = 8192;
  var gzipFileInputStream = new FileInputStream(tempPath);
  var zipin = new GZIPInputStream(gzipFileInputStream);
  var buffer = util.java.array("byte", sChunk);
  var out = new FileOutputStream(tempPath2);
  var length;
  while ((length = zipin.read(buffer, 0, sChunk)) != -1) out.write(buffer, 0, length);
  out.close();
  zipin.close();
  return files.read(tempPath2);
}
let url = "https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css";
let headers = {
  "accept-encoding": "gzip, deflate, br",
};
let r = http.get(url, {
  headers: headers,
});
log(r.headers["content-encoding"]);
// log(r.body.string());
let gzipBytes = r.body.bytes();
log(unzipGzipBytes(gzipBytes));


安卓11无障碍功能

-- @惜缘  

auto.service.performGlobalAction(9);
//1 返回
//3 切换任务
//4 下拉通知栏
//5 展开通知栏
//6 长按电源键
//7 分屏模式
//8 锁屏
//9 截图


rhino版本

null

org.mozilla.javascript.Context.getCurrentContext().getImplementationVersion();


java多线程

new Thread(new Runnable() {
  @Override
  public void run() {
    ...
  }
}).start();


反射

var dcl = context.getClassLoader();
var cls = dcl.loadClass("androidx.recyclerview.widget.DefaultItemAnimator");
fields = cls.getDeclaredFields();
var len = fields.length;
log("len = " + len);
for (var i = 0; i < len; i++) {
  field = fields[i];
  field.setAccessible(true);
  // if (
  //   field.getType().toString().endsWith("java.lang.String") &&
  //   java.lang.reflect.Modifier.isStatic(field.getModifiers())
  // )
  // log(field.getName() + " , " + field.get(Packages.androidx.recyclerview.widget.DefaultItemAnimator));
  log(field.getName());
}


Snackbar

"ui";
ui.layout(
  <vertical gravity="center">
    <button id="btn" textSize="30sp"></button>
  </vertical>
);
ui.btn.setText("牙叔教程\n简单易懂");
ui.btn.click(function () {
  com.google.android.material.snackbar.Snackbar.make(ui.btn, "牙叔教程\n简单易懂", 1000).show();
});


点击返回回到桌面,不退出程序

ui.emitter.on("back_pressed", function (e) {
  e.consumed = true;
  var i = app.intent({
    action: Intent.ACTION_MAIN,
    category: Intent.CATEGORY_HOME,
    flags: ["ACTIVITY_NEW_TASK"],
  });
  context.startActivity(i);
});


就是不退出界面, 你能咋滴

"ui";
ui.layout(
  <vertical>
    <button>aaa</button>
  </vertical>
);
ui.emitter.on("back_pressed", (e) => {
  toast("界面已锁定");
  e.consumed = true;
});


我回到桌面, 但我界面还在啊

"ui";
ui.layout(
  <vertical>
    <button>aaa</button>
  </vertical>
);
ui.emitter.on("back_pressed", (e) => {
  e.consumed = true;
  activity.moveTaskToBack(true);
});


连续按两次返回键退出

"ui";
ui.layout(
  <vertical>
    <button>aaa</button>
  </vertical>
);
var isCanFinish = false;
ui.emitter.on("back_pressed", (e) => {
  if (!isCanFinish) {
    toastLog("连续按两次返回键退出");
    isCanFinish = true;
    isCanFinishTimeout = setTimeout(() => {
      isCanFinish = false;
    }, 700);
    e.consumed = true;
  } else {
    clearTimeout(isCanFinishTimeout);
    e.consumed = false;
  }
});


声明

部分内容来自网络

本教程仅用于学习, 禁止用于其他用途

相关文章
autojs之停用音量上停止脚本
autojs 8.7.1自带示例中提供了某些开关
2714 0
|
6月前
|
JSON 监控 5G
某宝店铺商品全量接口-item_search_shop
淘宝item_search_shop_pro接口支持按店铺ID全量获取在售商品,含分页、字段筛选与类目过滤;提供完整参数说明、返回字段详解、Python调用示例及风控规范,开箱即用,适用于竞品监控、ERP同步与选品分析。(239字)
|
监控 前端开发 网络协议
《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(5)-Fiddler监控面板详解
【7月更文挑战第20天】Fiddler是一款强大的HTTP协议调试代理工具,它的监控面板是核心功能,记录服务器的请求会话,包括HTTP和HTTPS。监控面板分为多个标签,如统计数据(Statistics)展示性能指标,Inspector用于查看请求和响应的详细内容,AutoResponder允许重定向请求到本地资源,Composer用于构造和调试HTTP请求,还有Orchestra Beta、Fiddler Script、Log和Filters等功能。
995 14
《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(5)-Fiddler监控面板详解
|
固态存储 虚拟化 iOS开发
VMware ESXi 9.0 macOS Unlocker & OEM BIOS 2.7 NVMe 驱动特殊定制版
VMware ESXi 9.0 macOS Unlocker & OEM BIOS 2.7 NVMe 驱动特殊定制版
471 0
VMware ESXi 9.0 macOS Unlocker & OEM BIOS 2.7 NVMe 驱动特殊定制版
|
消息中间件 数据安全/隐私保护 Windows
windows下RabbitMQ安装后,无法进入web管理页面问题
windows下RabbitMQ安装后,无法进入web管理页面问题
1796 1
|
存储 JavaScript Android开发
AutoJs4.1.0实战教程---终极福利Apk
AutoJs4.1.0实战教程---终极福利Apk
1391 0
|
算法 JavaScript 前端开发
国标非对称加密:RSA算法、非对称特征、js还原、jsencrypt和rsa模块解析
国标非对称加密:RSA算法、非对称特征、js还原、jsencrypt和rsa模块解析
1618 1
|
数据采集 网络协议 开发者
工业自动化领域常见的通讯协议
工业自动化领域常见的通讯协议
3784 1

热门文章

最新文章