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;
  }
});


声明

部分内容来自网络

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

相关文章
|
5月前
|
API
AutoJs4.1.0开发心得
AutoJs4.1.0开发心得
81 0
|
5月前
AutoJs4.1.0 部局范围次分析
AutoJs4.1.0 部局范围次分析
66 0
|
XML Android开发 数据格式
autojs一键锁屏
牙叔教程 简单易懂
496 0
|
人工智能 前端开发 Java
autojs非常见函数1
牙叔教程 简单易懂
1879 0
|
5月前
|
缓存 Python
最后一次AutoJs超神级代码分享
最后一次AutoJs超神级代码分享
107 0
|
5月前
|
缓存 数据安全/隐私保护 Python
AutoJs超神级代码分享大更新
AutoJs超神级代码分享大更新
179 0
|
Android开发
autojs提词器
拍短视频 ● 忘词 ● 记不住台词 有了提词器, 就再也不怕忘词儿了
319 0
|
Java Android开发 C语言
autojs调用C
autojs调用C
338 0
|
测试技术 Android开发
autojs色卡
牙叔教程 简单易
195 0
|
文字识别 安全 Android开发
autojs联众识图
牙叔教程 简单易懂
228 0