启动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; } });
声明
部分内容来自网络
本教程仅用于学习, 禁止用于其他用途