AutoJs6 中文文档 下载 App

AutoJs6 权限管理 — 各类权限申请与说明

权限总览

AutoJs6 基于 Android 无障碍服务实现核心功能,但不同功能模块还需要额外的系统权限。下表列出全部权限及其用途:

权限触发时机必需性说明
无障碍服务首次开启自动化⭐⭐⭐ 必需所有自动化能力的基础
悬浮窗开启浮动按钮⭐⭐⭐ 必需显示浮动按钮和自定义悬浮窗
通知权限Android 13+ 通知⭐⭐ 推荐发送脚本完成通知等
前台服务运行长时脚本⭐⭐ 推荐防止系统后台清理
所有文件访问读写外部存储⭐⭐ 推荐Android 11+ 分区存储下使用
屏幕捕获截图(captureScreen)⭐⭐ 推荐首次截图时弹窗授权
录音语音识别功能⭐ 可选语音输入场景
Shizukuapp.launchDual 等⭐ 可选ADB 授权获取系统特权
Root Shellsu 命令执行⭐ 可选已 Root 设备上的高级功能

各版本差异

Android 7-10(API 24-29)

权限模型较宽松。大部分权限可在应用首次使用时弹窗申请,或在设置中手动开启。

Android 11(API 30)分区存储

Android 11 引入 Scoped Storage。访问外部存储文件(如 /sdcard/Download/)需要:

// Android 11+ 申请所有文件访问权限
// 主页抽屉 → 「所有文件管理权限」开关
// 或脚本中跳转设置页
files.requestAllFilesAccess();

Android 12+(API 31)前台服务类型

从 Android 12 开始,前台服务需要声明具体类型。AutoJs6 会在以下场景自动处理:

Android 13+(API 33)通知权限

从 Android 13 开始,发送通知需要运行时权限。AutoJs6 首次发送通知时会自动申请 POST_NOTIFICATIONS 权限。

// 主动申请通知权限
if (!notice.canNotify()) {
    notice.requestPermission();
}

Shizuku 授权流程

Shizuku 不是传统的 APK 权限,而是通过 ADB 连接建立的特权通道:

  1. 在电脑上执行 ADB 命令启动 Shizuku 服务:
   adb shell sh /sdcard/Android/data/moe.shizuku.privileged.api/start.sh
  1. 手机上打开 Shizuku Manager 应用,确认服务运行中
  2. 在 AutoJs6 中打开 Shizuku 支持开关
  3. 授权成功后即可使用高级 API

Shizuku Manager 的安装和启动命令会随 Shizuku 版本变化,以其官方文档为准。

权限诊断

当脚本因为权限问题报错时,可以用以下方法排查:

// 检查无障碍服务状态
console.log("无障碍服务: " + (auto.state ? "已开启" : "未开启"));

// 检查 Shizuku 状态
console.log("Shizuku 服务: " + (shizuku.state ? "已授权" : "未授权"));

// 检查文件访问权限
console.log("所有文件访问: " + (files.hasAllFilesAccess() ? "已授权" : "未授权"));

// 检查屏幕捕获权限
console.log("屏幕捕获: " + (images.canCaptureScreen() ? "已授权" : "未授权"));

// 通知权限
console.log("通知: " + (notice.canNotify() ? "已授权" : "未授权"));

注意事项