注:本脚本可以使用autojs6或者autojsX
安卓app运行。
本脚本使用注意事项:
蓝牙或者定位必须是autojs6 或者autojsX**(安卓自动化软件app)开启的,才能使用对应关闭方法。否则执行关闭命令是没有任何效果的。**
一句话,自己开启的自己才能关,无法关闭别人开启的
这也是为什么下面定位是分开写的原因,当然定位也可以写成一个方法。
重要:如果你的autojs没有定位、蓝牙、修改系统权限,使用脚本是没有用!!!
通过adb授予安全写入权限
--开启调试 授权安全设置
adb获取当前打开的app的包名
adb shell dumpsys window | findstr mCurrentFocus
--可以授权截图权限 不再弹窗询问
adb shell appops set {包名} PROJECT_MEDIA allow
--添加安全写入权限
adb shell pm grant {包名} android.permission.WRITE_SECURE_SETTINGS
autojs6包名:org.autojs.autojs6
请确保执行前有无障碍权限
1. 蓝牙
//操作蓝牙函数,true启用,false禁用
function setBT(ec){
//指定时间自动开启蓝牙和定位
//导入蓝牙包和获取蓝牙适配器
importClass("android.bluetooth.BluetoothAdapter");
let mAdapter = BluetoothAdapter.getDefaultAdapter();
//蓝牙没有启用并且执行开启操作
if(!mAdapter.isEnabled()&&ec){
mAdapter.enable(); // 打开蓝牙
}else if(mAdapter.isEnabled()&&!ec){
mAdapter.disable();
}
}
2. 定位
//启用GPS
function enableGPS(){
importClass("android.provider.Settings")
importClass("android.location.LocationManager")
Settings.Secure.setLocationProviderEnabled(context.getContentResolver(), LocationManager.GPS_PROVIDER, true);
}
//关闭GPS
function closeGPS(){
importClass("android.provider.Settings")
importClass("android.location.LocationManager")
Settings.Secure.setLocationProviderEnabled(context.getContentResolver(), LocationManager.GPS_PROVIDER, false);
}
3. 扩展
3.1 模块封装
mokuai.js
// 省略以上代码
//打开根据app名称指定程序
function launchApp(appName){
app.launchApp(appName);
}
module.exports.tools={
launchApp,
enableGPS,
closeGPS,
setBT
}
3.2 写一个哈啰单车脚本
单车.js(和mokuai.js在同一个目录下)
let { tools } = require("./mokuai.js");
tools.setBT(true);
tools.enableGPS();
tools.launchApp("哈啰");
var thread = threads.start(function(){
sleep(1.5*60*1000);
/**
* 退出有两种条件:1.执行完成 2.超时
*/
log("超时关闭")
exit();
});
//开屏
let open=threads.start(()=>{
let i=0;
while(i<10){//延时次数
//关闭弹窗
if(id("com.jingyao.easybike:id/actionDialogClose").exists()){
id("com.jingyao.easybike:id/actionDialogClose").findOne().click();
}
//扫一扫
if(id("com.jingyao.easybike:id/scanLayout").exists()){
id("com.jingyao.easybike:id/scanLayout").findOne().click();
}
i++;
sleep(1000);
}
});
因为加了线程,哪怕线程内的代码执行完了,脚本也不会自动结束。
所以加了线程超时关闭,调用exit()结束整个脚本。