autojs开机自启

简介: 这个代码是继承了广播接收器, 如果是开机广播, 就启动intent2, intent2是SplashActivity, 也就是一般app的启动页接下来开始用mt管理器合并这个开机类;

牙叔教程 简单易懂

第一步: 编写用于测试的开机运行脚本

main.js

"ui";

ui.layout(

   <vertical>

       <button textSize="30sp">牙叔教程 开机自启</button>

   </vertical>

);


第二步: 打包这个脚本, 打包单文件或者项目都可以,

第三步: 添加启动类

这里我们使用的是mt管理器,


首先我们看看test.dex里面写的什么, 查看dex的工具这里用的是 jadx-gui

package com;


import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import com.stardust.autojs.inrt.SplashActivity;


/* loaded from: C:\Users\ADMINI~1\AppData\Local\Temp\jadx-4849598729232909477.dex */

public class AutoBootActivity extends BroadcastReceiver {

   @Override // android.content.BroadcastReceiver

   public void onReceive(Context context, Intent intent) {

       if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {

           Intent intent2 = new Intent(context, SplashActivity.class);

           intent2.setFlags(268435456);

           context.startActivity(intent2);

       }

   }

}

这个代码是继承了广播接收器, 如果是开机广播, 就启动intent2, intent2是SplashActivity, 也就是一般app的启动页

接下来开始用mt管理器合并这个开机类;

安卓用的是smali文件, 上面的类对应的smali是

.class public Lcom/AutoBootActivity;

.super Landroid/content/BroadcastReceiver;

.source "AutoBootActivity.java"



# direct methods

.method public constructor <init>()V

   .registers 1


   .prologue

   .line 7

   invoke-direct {p0}, Landroid/content/BroadcastReceiver;-><init>()V


   return-void

.end method



# virtual methods

.method public onReceive(Landroid/content/Context;Landroid/content/Intent;)V

   .registers 6

   .param p1, "context"  # Landroid/content/Context;

   .param p2, "intent"  # Landroid/content/Intent;


   .prologue

   .line 10

   invoke-virtual {p2}, Landroid/content/Intent;->getAction()Ljava/lang/String;


   move-result-object v1


   const-string v2, "android.intent.action.BOOT_COMPLETED"


   invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z


   move-result v1


   if-eqz v1, :cond_1b


   .line 11

   new-instance v0, Landroid/content/Intent;


   const-class v1, Lcom/stardust/autojs/inrt/SplashActivity;


   invoke-direct {v0, p1, v1}, Landroid/content/Intent;-><init>(Landroid/content/Context;Ljava/lang/Class;)V


   .line 12

   .local v0, "intent2":Landroid/content/Intent;

   const/high16 v1, 0x10000000


   invoke-virtual {v0, v1}, Landroid/content/Intent;->setFlags(I)Landroid/content/Intent;


   .line 13

   invoke-virtual {p1, v0}, Landroid/content/Context;->startActivity(Landroid/content/Intent;)V


   .line 15

   .end local v0  # "intent2":Landroid/content/Intent;

   :cond_1b

   return-void

.end method


用mt管理器添加smali的步骤

第一步: 用mt管理器的安装包提取功能, 提取我们刚才打包好的app

mt的安卓包提取选项: 打开mt, 点击左上角更多菜单, 就可以看到安装包提取选项

提取的apk所在路径:

文件已保存到 /storage/emulated/0/MT2/apks/开机自启_1.0.0.apk

查看app的文件

发现他有3个dex文件, 我们挑一个文件比较小的dex, classes2.dex文件是最小的, 309k, 就它了;

点他, 然后选择 dex编辑器++


长按那个j$, 点击添加,

  • 包名修改为 com    
  • 类名修改为 AutoBootActivity

点击确定

再点开autobootactivity文件


把里面的全删了, 然后把上面的smali文件内容黏贴进去


点击保存, 再按返回键, 保存并退出, 确定.

然后就修改完啦, 接下来测试一下是不是真的能开机自启

卸载原来的app, 然后安装我们修改后的app,

我先把开机密码删掉, 然后打开一次app, 给app自启动权限, 再重启手机;

额, 开机后等了一分钟, 没有成功,

我再把后台弹出界面也给他, 再次重启手机,

额, 开机后等了一分钟, 还是没有成功,

省电策略, 改成无限制, 悬浮窗也给他,

突然想起来, 清单文件还没加, 这个是

静态注册广播, 监听开机广播的

<receiver android:name="com.AutoBootActivity">

   <intent-filter>

       <action android:name="android.intent.action.BOOT_COMPLETED" />

       <category android:name="android.intent.category.LAUNCHER" />

   </intent-filter>

</receiver>      

mt管理器查看修改后的app, 然后点他, 反编译


搜receiver标签, 把上面的静态注册广播代码,

放到<receiver>标签同级别即可, 然后保存, 确定;

卸载原来的app, 安装修改后的app

打开一次app, 授予他自启动, 和 后台弹出界面权限,

去开发者选项, 勾选 直接进入系统,

再次重启手机, 开机后等了一分钟, 还是没反应;

这次再给一些权限,

  • 悬浮窗
  • 省电策略无限制


等了48秒, 启动成功

环境

手机:小米11pro
MIUI: 13.0.12
Android版本: 12
Autojs版本: 9.1.22

鸣谢

autojs内测群成员的分享

dayeve,  惜缘, 林海, 无名大姐

名人名言

思路是最重要的, 其他的百度, bing, stackoverflow, github, 安卓文档, autojs文档, 最后才是群里问问 --- 牙叔教程

声明

部分内容来自网络 本教程仅用于学习, 禁止用于其他用途


相关文章
|
Android开发
autojs修改悬浮窗按钮点击事件
牙叔教程 简单易懂
1890 0
|
Android开发
autojs用ConnectivityManager实现网络监听
autojs用ConnectivityManager实现网络监听
1580 0
|
Android开发
Autox.js 脚本开发环境搭建,从案例到打包apk(详细流程)
Autox.js 脚本开发环境搭建,从案例到打包apk(详细流程)
4923 0
|
Android开发
autojs无Root访问data目录实现
牙叔教程 简单易懂
3715 0
|
1月前
|
JavaScript Linux API
OpenClaw搭建个股分析模型实操:阿里云/本地部署与金融数据对接+API配置+常见问题解析
在AI智能体技术快速落地的2026年,OpenClaw(Clawdbot)凭借开源、本地运行、可扩展的特性,成为金融投研领域搭建个性化分析模型的核心工具。笔者基于OpenClaw搭建个股分析模型的第7天,完成了核心的数据链路调整与多维度分析体系优化,从最初仅单一维度接入实时数据,到实现多类金融基础数据的实时调取,同时完成了阿里云云端与本地MacOS/Linux/Windows11多系统的部署适配,成功对接东方财富、同花顺等专业金融数据渠道。本文将完整还原个股分析模型的优化过程,详细拆解2026年OpenClaw多端部署流程、阿里云百炼Coding Plan API配置方法,并解答部署与模型搭建
778 0
autojs普通版控制台美化
autojs普通版控制台美化
1377 0
|
3月前
|
网络协议 安全 数据建模
免费SSL 证书怎么申请?2026年阿里云 SSL 证书申请全流程(新手教程)
阿里云免费 SSL 证书申请核心是 “确认域名归属”,整个流程约半小时,关键在于仔细核对信息、正确添加解析记录。若仅用于测试或临时场景,免费证书足够;正式业务网站(尤其是涉及登录、支付),建议升级为有效期更长、功能更全的正式证书(如 DV、OV 证书)。定期检查证书到期时间,及时更新,才能持续保障网站数据传输安全。
|
人工智能 数据可视化 数据处理
PySpur:零代码构建AI工作流!开源可视化拖拽平台,支持多模态与RAG技术
PySpur 是一款开源的轻量级可视化 AI 智能体工作流构建器,支持拖拽式界面,帮助用户快速构建、测试和迭代 AI 工作流,无需编写复杂代码。它支持多模态数据处理、RAG 技术、文件上传、结构化输出等功能,适合非技术背景的用户和开发者快速上手。
932 5
|
监控 JavaScript Shell
AutoxJS脚本保姆级教程
AutoxJS脚本保姆级教程
1297 3
|
开发框架 Dart 前端开发
移动应用开发中的跨平台策略:React Native与Flutter的比较分析
【8月更文挑战第31天】 在快速变化的移动应用市场,开发者面临着如何在众多平台间高效部署应用的挑战。本文将深入探讨两种主流的跨平台移动应用开发框架——React Native和Flutter,通过对比它们的核心特性、性能表现以及社区生态,为开发者提供选择框架时的参考依据。我们将借助代码示例,展现两者在实际开发中的应用差异,并分析各自的优势和潜在局限,以期帮助开发者根据项目需求做出明智的技术选型。

热门文章

最新文章