function setExitTimeout(time){
let timeoutExit_ = engines.execScript(util.format("%s 的定时关闭", files.getName(engines.myEngine().source)),
([
"events.on(\"set_e\", (engine, time) => {",
" console.log(engine, time);",
" setTimeout(()=>{",
" engine.forceStop();",
" }, time);",
"});",
"setTimeout(()=>{}, 5000);"
]).join("\n"));
while(timeoutExit_.getEngine() === null){}
setTimeout(()=>{timeoutExit_.getEngine().emit("set_e", engines.myEngine(), time)}, 250);
let engine = timeoutExit_.getEngine();
class timeoutExit {
constructor (engine) {
this.engine = engine;
}
clear () {
this.engine.forceStop();
}
}
return new timeoutExit(engine);
}
setExitTimeout(6000);
// setTimeout(()=>{}, 10000);
22:56:46.858/E: identifier is a reserved word: class (/storage/emulated/0/auto.js/脚本/自动启动脚本/每n分钟执行一次/1/1.js#15)
identifier is a reserved word: class
是为什么啊
同问,因为我用的校园网,想搞一些涉及到网络请求的自动化脚本,可是校园网晚上11:00就会关,而校园网晚上11:00关的是对外路由(虽然它从始至终就没有开过对内路由),也就是说晚上11:00到第二天(我也不知道是几点钟开的)我手机都会持续连接到这种无法正常使用的,会被推迟响应的(就是相当于是一直处于连接中的状态),没有超时时间的话,因为我设置那个脚本是每分钟都要执行一次,而如果一直没有响应的话脚本又关不了,那么他们就会一直保持运行到第二天早上,在这期间,还有一些其他的不涉及到网络的,但也是需要持续运行的这些脚本,以及一直在运行的每分钟执行一次的脚本,这些脚本加起来会占用我手机的大量运行内存,啊所以懂得都懂,所以我也确实需要一个超时时间
在activityorg.autojs.autojs.ui.build.ProjectConfigActivity_
[Layout XML文件路径:APK FILE/res/St1.xml
](进入软件后点击右上角加号点击项目后进入的页面)中的“项目路径”输入框应当是文本框,而软件中是数字框
问题XML元素标签完整内容
<androidx.appcompat.widget.AppCompatEditText
android:id="@7F090265"
android:layout_width="-1"
android:layout_height="-2"
android:inputType="0x00000002" />
可以直接在反编译后的xml文件中搜索内容:android:id="@7F090265"
然后将该元素的android:inputType
属性值更改为0x00000000
我手动试了一下,发现不同的脚本之间播放的音频是不会互相干扰的
在同一脚本中,即使使用了多线程,第二次播放音乐,仍然会将第一次播放的音乐停止
而在不同脚本中,后播放的音乐不会停止先播放的音乐
由此我们可以使用多脚本策略,如果你打算只使用一个脚本,也可以使用执行脚本文本的方式(可以不用执行脚本文件,而换成使用脚本文本)
测试视频链接
视频链接1
备用链接(很慢,其他的浏览器会变成下载)
支持一下吧……
(搜索引擎搜了半天搜不到,找AI也问了老半天,一大堆错误的回答,不停的根据报错内容和未报错的执行现象对其进行纠正,最后总算是测试成功了)
"ui";
ui.layout(
<vertical>
<input id="input" hint="输入框" />
<input id="input2" hint="输入框2" />
</vertical>
);
let input = ui.input; // 将 ui.input 中的 input 替换成你实际的input控件ID
var prevFocus = null; // 记录上一个焦点所在的输入框id
input.setOnFocusChangeListener({
onFocusChange: function(view, hasFocus) {
if (!hasFocus) {
// 输入框失去焦点
console.log("输入框失去焦点");
} else if (hasFocus) {
// 输入框获得焦点
console.log("输入框获得焦点");
}
prevFocus = hasFocus ? "myInput" : null;
}
});
我基本上没有把需要查找控件的脚本打包成软件,原因很简单,我曾经使用的是auto.js Pro,打开过无障碍权限后,即使是关机重启都不会被撤销(除非打开超级省电)而如果把脚本打包成软件那么每一次将软件关闭后都会被撤销掉无障碍权限,麻烦的要死,所以如果是需要用到无障碍权限的脚本,不建议打包成软件
确实有可能是你在提问中所说的问题,我之前有遇到过相同的问题,虽然不是在点击按钮进行的网络请求,据说是线程问题,由报错翻译结果判断,具体内容并没有保存下来,其大致意思是说:不能在UI线程中进行网络请求(好像是因为权限问题还是安卓sdk问题)
一个最简单粗暴且有用的办法是,创建一个新线程,然后在新线程中进行网络请求,响应结果通过线程通信进行传递,或者使用ui.run
函数通过UI界面中的信息进行传递
他的信息是JSON格式的,通过你所给出的代码可知你是通过网络请求后获取到的数据,那么这个数据可以通过网络请求的响应对象的响应体它会有一个获取响应体的JSON对象的函数:HTTP对象.body.json()
,然后通过获取json对象键值的操作方式:HTTP对象.body.json().j
他的结果就是24.17
你可以用这样子的代码:
var url = "http://api.mairui.club/zs/kdj/sh000300/dn/f15f12792427f5ad42";
//http://api.mairui.club/zs/kdj/指数代码(如sh000001)/分时级别/您的licence
//http://api.mairui.club/jj/lsma/基金代码/分时级别/您的licence
var res = http.get(url);
if(res.statusCode == 200){
toast("请求成功");
console.show();
log(res.body.string());
//上面是你原本的输出log,下面是你要输出的那一个
console.log(res.body.json().j);
print("OKK")
}else{
toast("请求失败:" + res.statusMessage);
}