Kill App
调用openAppSetting(packageName)方法打开系统设置中对应APP的设置页
通过控件操作点击强制停止,确认等按钮,达到杀死APP的目的
该方法巧妙的规避了通过adb shell kill或者 adb shell am force-stop方法带来的权限问题
https://yanbo92.site/autojs-kill-app/
function kill_app(packageName) {
var name = getPackageName(packageName);
if (!name) {
if (getAppName(packageName)) {
name = packageName;
} else {
return false;
}
}
app.openAppSetting(name);
text(app.getAppName(name)).waitFor();
let is_sure = textMatches(/(.*强.*|.*停.*|.*结.*|.*行.*)/).findOne();
if (is_sure.enabled()) {
textMatches(/(.*强.*|.*停.*|.*结.*|.*行.*)/).findOne().click();
textMatches(/(.*确.*|.*定.*)/).findOne().click();
log(app.getAppName(name) + "应用已被关闭");
sleep(1000);
back();
} else {
log(app.getAppName(name) + "应用不能被正常关闭或不在后台运行");
back();
}
}
kill_app('微信')
var result = shell("am force-stop com.xingin.xhs", true);
log(result);
console.show();
if(result.code == 0){
toast("执行成功");
}else{
toast("执行失败!请到控制台查看错误信息");
}
Intent的使用
app.startActivity({
action: 'android.intent.action.VIEW',
data: 'https://www.xiaohongshu.com/user/profile/60963da8000000000100b971?xhsshare=QQ',
packageName: 'com.xingin.xhs',
});
app.startActivity({
action: 'android.intent.action.VIEW',
data: 'xhsdiscover://item/62208b8400000000210369ab?open_url=/discovery/item/62208b8400000000210369ab?xhsshare=CopyLink&position=to_note-bottom-btn&browser=qq&exp_groups=wx_launch_open_app_decrement_v2_clt,wx_launch_open_app_decrement_exp,wx_launch_open_app_duration_origin,recommend_comment_hide_exp1,recommend_comment_hide_v2_exp2,recommend_comment_hide_v3_origin,supervision_exp,supervision_v2_exp,commentshow_exp1,gif_clt1,ques_clt2&url=noteDetail&xhsshare=CopyLink',
packageName: 'com.xingin.xhs',
className: 'com.xingin.xhs.routers.RouterPageActivity',
});
//这里category不能加[],而flags加不加都行。。
var i = app.intent({
action:'android.intent.action.MAIN',
category:'android.intent.category.LAUNCHER',
packageName:"com.xingin.xhs",
flags:[0x14000040],
className:'com.xingin.xhs.index.v2.IndexActivityV2'
});
app.startActivity(i);
Android 开发者选线 勾选 指针位置 可以看到滑动轨迹
仿真滑动
//长距离测试
bezier_curves(400, 1800, 800, 230, 1000);
//短距离测试
//bezier_curves(400, 1000, 800, 600, 1000);
//开发者选项-指针位置,打开后可以看到滑动轨迹
//三阶贝塞尔曲线
function bezier_curves(first_x, first_y, second_x, second_y, time) {
let curves = [time];
let points = [
{
"x": random(first_x - 5, first_x + 5),
"y": random(first_y - 5, first_y + 5)
},{
"x": random(first_x - 100, first_x + 100),
"y": random(first_y, first_y + 50)
},{
"x": random(second_x - 100, second_x + 100),
"y": random(second_y , second_y + 50),
},{
"x": random(second_x - 5, second_x + 5),
"y": random(second_y - 5, second_y + 5)
}
];
let cx = 3.0 * (points[1].x - points[0].x);
let bx = 3.0 * (points[2].x - points[1].x) - cx;
let ax = points[3].x - points[0].x - 3.0 * (points[2].x - points[1].x);
let cy = 3.0 * (points[1].y - points[0].y);
let by = 3.0 * (points[2].y - points[1].y) - cy;
let ay = points[3].y - points[0].y - 3.0 * (points[2].y - points[1].y);
for (let i = 0; i < 1; i += 0.08) {
square = i * i;
cube = square * i;
let x = (ax * cube) + (bx * square) + (cx * i) + points[0].x;
let y = (ay * cube) + (by * square) + (cy * i) + points[0].y;
curves.push([parseInt(x), parseInt(y)]);
}
gesture.apply(this, curves);
}
HTTP
var url = 'http://172.16.5.26:15672/api/queues/%2F/xiaohongshu:article_detail_h5/get';
r = http.postJson(url,
{"count":1,"ackmode":"ack_requeue_true","encoding":"auto"},
{headers:{
'Authorization': 'Basic Z3Vlc3Q6Z3Vlc3Q='
}}
);
log(JSON.parse(JSON.parse(r.body.string())[0]["payload"])["cid"]);