吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4036|回复: 18
收起左侧

[Android] 【Autojs6】自编译6.3.3 隐藏任务快捷方式

  [复制链接]
dlufjfiqnurr 发表于 2024-5-18 11:03
本帖最后由 dlufjfiqnurr 于 2024-5-18 11:40 编辑

1.  引言

Autojs6是一款优秀的安卓自动化软件,保活能力强,稳定性好。

当然也不贬低AutoX.js,这个软件功能也同样强大,只是个人能力时间场景有限,没有深入使用。

pkuUFbQ.png

pkuG8Ld.png

我在以前,学习autojs时,简单的阅读了源码,把原生的autojs的32位版本修改成64版本(不知道更新依赖库,所以也不了了之,建议大家不要尝试),给autojs6或者autoX.js添加下面的三个功能。

由于不会提pr,为了加这三个功能,无论是autojs6还是autoX.js,都跟着编译了几个版本,后来也没有编译了。能用就行。

大家不要问我要其他的,有点找不到了,编译也很麻烦。

2. 修改

目前手上只有编译了autojs6的6.3.3版本,分享给大家。

1.添加了一些常用权限,如蓝牙,闪光灯,termux权限。

2.对脚本创建快捷方式进行了修复。可以正常创建快捷方式。

3.添加了隐藏任务开关。

gif,放大观看

1716002490593

pkutzXF.png
autojs6在后台运行时,开启隐藏,多任务界面就看不到autojs6,关闭,则能够看到autojs6。这样autojs6就一直在后台运行。开启应用自启和电池优化白名单,加锁,就能一直运行。不同手机功能不同,请自行寻找解决方法。


以下代码,提供思路,我也放出来。分享的链接处理对应不同架构apk。


添加权限

<!-- 添加闪光灯权限-->
<uses-permission android:name="android.permission.FLASHLIGHT"/>
<uses-permission android:name="android.permission.CAMERA"/>
<!-- 添加蓝牙权限-->
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<!-- 添加termux权限-->
<uses-permission android:name="com.termux.permission.RUN_COMMAND"/>

隐藏任务

为了方便理解思路,这里以原生autojs最后一个版本,为例,autojs6使用了kotlin版本,可以查找我分享的autojs6 v6.3.3源码复制。

BaseActivity.java
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public void setHideModeEnabled(boolean enabled) {
    ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
    if(am != null) {
        List<ActivityManager.AppTask> tasks = am.getAppTasks();
        if (tasks != null && tasks.size() > 0) {
            tasks.get(0).setExcludeFromRecents(enabled);
        }
    }
}
DrawerFragment.java

new DrawerMenuItem(R.drawable.ic_night_mode, R.string.text_hide_task, R.string.key_hide_task, this::toggleHideMode)

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private void toggleHideMode(DrawerMenuItemViewHolder holder) {
    ((BaseActivity) getActivity()).setHideModeEnabled(holder.getSwitchCompat().isChecked());
}
package org.autojs.autojs.ui.main

MainActivity.java 中的onCreate方法加入

if(Pref.isHideModeEnabled()){
            super.setHideModeEnabled(true);
}
Pref.java

public static boolean isHideModeEnabled() {
        return def().getBoolean(getString(R.string.key_hide_task), false);
}

autojs6对应version6.3.3

org.autojs.autojs.ui.BaseActivity.kt
//基本窗口类添加设置隐藏模式,方便设置隐藏模式
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
open fun setHideModeEnabled(enabled: Boolean) {
    val am = getSystemService(ACTIVITY_SERVICE) as ActivityManager
    if (am != null) {
        val tasks = am.appTasks
        if (tasks != null && tasks.size > 0) {
            tasks[0].setExcludeFromRecents(enabled)
        }
    }
}
org.autojs.autojs.ui.main.MainActivity.kt#onCreate
// 打开应用读取并设置隐藏任务属性
if(Pref.getBoolean(R.string.key_hide_task_enabled,false)){
        super.setHideModeEnabled(true);
}
org.autojs.autojs.ui.main.drawer.DrawerFragment.kt
//多任务隐藏
private lateinit var mHideTaskItem: DrawerMenuToggleableItem

//隐藏任务
mHideTaskItem = DrawerMenuToggleableItem(
    object : DrawerMenuItemCustomHelper(mContext) {
        override val isActive: Boolean
            get() = Pref.getBoolean(R.string.key_hide_task_enabled,false)

        override fun toggle() {
            TODO("Not yet implemented")
        }

        override fun toggle(aimState: Boolean) {
            (activity as BaseActivity?)!!.setHideModeEnabled(aimState)
            Pref.putBoolean(R.string.key_hide_task_enabled, aimState)
        }

    },
    R.drawable.ic_hide_task,
    R.string.text_hide_task,
    DrawerMenuItem.DEFAULT_DIALOG_CONTENT,
    R.string.key_hide_task_enabled,
)

创建快捷方式

package org.autojs.autojs.external.shortcut;

ShortcutManager.java
@RequiresApi(api = Build.VERSION_CODES.O)
    public void addPinnedShortcut(CharSequence label, String id, Icon icon, Intent intent) {
        if (!mShortcutManager.isRequestPinShortcutSupported()) {
            return;
        }
        ShortcutInfo shortcut = buildShortcutInfo(label, id, icon, intent);
        int req = getRequestCode(id);
        Intent secondIntent = new Intent();
        secondIntent.setAction("android.settings.CAPTIONING_SETTINGS");
        PendingIntent successCallback = PendingIntent.getBroadcast(mContext, 0,
                secondIntent, PendingIntent.FLAG_UPDATE_CURRENT);
        mShortcutManager.requestPinShortcut(shortcut, successCallback.getIntentSender());
    }

    private ShortcutInfo buildShortcutInfo(CharSequence label, String id, Icon icon, Intent intent) {
        return new ShortcutInfo.Builder(mContext, id)
                .setIntent(intent)
                .setShortLabel(label.toString())//就这两行代码改成一样,就不会出现闪退卡死,其他没有动
                .setLongLabel(label.toString())//就这两行代码改成一样,就不会出现闪退卡死
                .setIcon(icon)
                .build();
    }

3. 链接

蓝奏:https://wwi.lanzoup.com/b0izjk7vg 密码:52pj

现在我基本很少执行定时任务了,经常使用的就是定时报时或者语音提醒。随着时代的发展,感觉现在的手机智能化也还可以。但是还是需要使用autojs6,毕竟可以自己写代码,功能扩展性好。手机的自动化功能毕竟有限。

最后,还是希望大家理性看待脚本,认真享受生活。

这是我自己编译的版本,属于自用的。保证无毒无害。希望大家喜欢。

免费评分

参与人数 10吾爱币 +9 热心值 +10 收起 理由
liuxinyu1225 + 1 + 1 用心讨论,共获提升!
andy512 + 1 + 1 热心回复!
柳叶刀 + 1 + 1 谢谢@Thanks!
鸡哥带你飞 + 1 + 1 我很赞同!
xhxlywy + 1 + 1 我很赞同!
安道尔的鱼 + 1 + 1 我很赞同!
wxn2023 + 1 + 1 用心讨论,共获提升!
icxz + 1 + 1 谢谢@Thanks!
twl859588 + 1 谢谢@Thanks!
tzw017007 + 1 + 1 转存了。链接:https://pan.baidu.com/s/1yGkgnlbYeHZje7wl-YMmdg?pwd=52pj.

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| dlufjfiqnurr 发表于 2024-5-18 12:11
如果要使用vscode开发,需要使用AutoJs6 VSCode Extension v1.0.6,自己禁用插件更新,新版本不兼容v6.3.3
提拉米苏子冉 发表于 2024-5-18 12:28
Scan 发表于 2024-5-18 11:34
HUANG125804 发表于 2024-5-18 11:43
感谢感谢&#128591;
carrey 发表于 2024-5-18 11:56
不错,感谢分享
头像被屏蔽
pj666a 发表于 2024-5-18 12:52
提示: 作者被禁止或删除 内容自动屏蔽
icepyb 发表于 2024-5-18 12:54
感谢大佬分享
nojon 发表于 2024-5-18 12:58
谢谢分享
wh7115 发表于 2024-5-18 15:13
好东西啊
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 10:05

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表