更新记录

1.0.0(2026-11-11)

  • 首个版本:支持 uni-app 与 uni-app x(Android)。
  • 开机自启开关:setEnabled / isEnabled,默认开启,重启后由原生广播自动拉起应用。
  • 延迟启动:setDelay / getDelay,取值 0~60000 毫秒,超范围自动截断。
  • 环境检测:getEnv / hasOverlayPermission / isIgnoringBatteryOptimizations / getManufacturer。
  • 设置页跳转:openOverlaySettings / openBatteryOptimizationSettings / requestIgnoreBatteryOptimizations / openAutoStartSettings / openAppSettings。
  • 厂商自启动管理页覆盖小米、华为、荣耀、OPPO、vivo、魅族、三星、华硕、联想,未命中时兜底应用详情页。

平台兼容性

uni-app(4.72)

Vue2 Vue2插件版本 Vue3 Vue3插件版本 Chrome Safari app-vue app-vue插件版本 app-nvue app-nvue插件版本 Android Android插件版本 iOS 鸿蒙
√ 1.0.0 √ 1.0.0 × × √ 1.0.0 √ 1.0.0 5.0 1.0.0 × ×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
× × × × × × × × × × × ×

uni-app x(4.72)

Chrome Safari Android Android插件版本 iOS 鸿蒙 微信小程序
× × 5.0 1.0.0 × × ×

zy-bootstart

插件介绍

Android 开机自启 UTS 原生插件,支持 uni-app 与 uni-app x。设备开机(或厂商快速开机)后由原生广播自动拉起应用主界面,无需 JS 参与;同时提供自启开关、延迟启动、悬浮窗与电池优化检测、各厂商自启动管理页跳转能力。开机能力要求 Android 5.0 及以上。

使用场景

  • 一体机、广告机、工控平板等设备断电重启后自动回到业务界面,无需人工点开应用。
  • 需要在应用内提供「开机自启」开关,让最终用户自行决定是否随系统启动。
  • 部分设备开机后系统服务未就绪,需要延迟几秒再拉起应用,避免首屏白屏或接口请求失败。
  • 国产 ROM 默认拦截自启动,需要在应用内引导用户逐个打开自启动、后台运行、悬浮窗权限。

使用流程

  1. 引入插件,调用 getEnv() 读取当前环境(自启开关、延迟、悬浮窗权限、电池优化状态、厂商)。
  2. 调用 setEnabled(true) 开启自启,setDelay(毫秒) 设置开机后延迟启动时间。
  3. 按 getEnv() 的结果引导用户授权:hasOverlayPermission() 为 false 时调用 openOverlaySettings()。
  4. isIgnoringBatteryOptimizations() 为 false 时调用 requestIgnoreBatteryOptimizations() 或 openBatteryOptimizationSettings()。
  5. 国产 ROM 还需调用 openAutoStartSettings() 打开厂商自启动管理页,由用户手动允许。
  6. 断电或重启设备验证:原生广播会在系统开机完成后自动拉起应用。

用法

import {
    setEnabled,
    isEnabled,
    setDelay,
    getDelay,
    getEnv,
    hasOverlayPermission,
    isIgnoringBatteryOptimizations,
    getManufacturer,
    openOverlaySettings,
    openBatteryOptimizationSettings,
    requestIgnoreBatteryOptimizations,
    openAutoStartSettings,
    openAppSettings
} from '@/uni_modules/zy-bootstart'

开关与延迟

// 开启开机自启(默认 true,接入后不调用也会生效)
setEnabled(true)

// 查询当前开关
console.log('开机自启:', isEnabled())

// 开机后延迟 5 秒再拉起应用(取值 0~60000,超出自动截断)
setDelay(5000)
console.log('延迟启动:', getDelay(), 'ms')

环境检测

const env = getEnv()
// env.enabled                    是否已开启开机自启
// env.delay                      延迟启动毫秒数
// env.overlayPermission          是否已授予悬浮窗权限
// env.batteryOptimizationIgnored 是否已忽略电池优化
// env.manufacturer               设备厂商,如 Xiaomi / HUAWEI
// env.brand                      设备品牌
// env.androidVersion             Android API 版本,如 33
// env.supported                  当前平台是否支持开机自启
console.log('自启环境', JSON.stringify(env))

console.log('悬浮窗权限:', hasOverlayPermission())
console.log('忽略电池优化:', isIgnoringBatteryOptimizations())
console.log('厂商:', getManufacturer())

引导用户授权

// 悬浮窗权限(Android 10 及以上开机拉起界面依赖该权限)
openOverlaySettings({
    success: (res) => {
        // res.success 是否成功打开
        // res.action  实际打开的入口,见「插件方法」
        // res.message 可直接展示的提示文案
        console.log('打开悬浮窗权限页', JSON.stringify(res))
        uni.showModal({ title: '提示', content: res.message, showCancel: false })
    },
    fail: (err) => console.error(err.errCode, err.errMsg),
    complete: (res) => console.log('complete', JSON.stringify(res))
})

// 电池优化:弹系统确认框(推荐)
requestIgnoreBatteryOptimizations({
    success: (res) => console.log('申请忽略电池优化', JSON.stringify(res)),
    fail: (err) => console.error(err.errCode, err.errMsg),
    complete: (res) => console.log('complete', JSON.stringify(res))
})

// 电池优化:打开列表页手动设置
openBatteryOptimizationSettings({
    success: (res) => console.log('电池优化列表', JSON.stringify(res)),
    fail: (err) => console.error(err.errCode, err.errMsg),
    complete: (res) => console.log('complete', JSON.stringify(res))
})

// 厂商自启动管理页(小米/华为/荣耀/OPPO/vivo/魅族/三星等,未命中兜底应用详情页)
openAutoStartSettings({
    success: (res) => {
        console.log('自启动管理页', JSON.stringify(res))
        uni.showModal({ title: '提示', content: res.message, showCancel: false })
    },
    fail: (err) => console.error(err.errCode, err.errMsg),
    complete: (res) => console.log('complete', JSON.stringify(res))
})

// 应用详情页(手动授权兜底入口)
openAppSettings({
    success: (res) => console.log('应用详情页', JSON.stringify(res)),
    fail: (err) => console.error(err.errCode, err.errMsg),
    complete: (res) => console.log('complete', JSON.stringify(res))
})

插件方法

方法 说明 回调
setEnabled(enable: boolean): boolean 设置是否允许开机自启,默认 true,返回是否保存成功 无(同步)
isEnabled(): boolean 查询是否允许开机自启 无(同步)
setDelay(delay: number): boolean 设置开机后延迟启动时间(毫秒),取值 0~60000,超范围自动截断,返回是否保存成功 无(同步)
getDelay(): number 查询开机延迟启动时间(毫秒) 无(同步)
getEnv(): BootStartEnv 读取自启环境信息 无(同步)
hasOverlayPermission(): boolean 查询是否已授予悬浮窗权限 无(同步)
isIgnoringBatteryOptimizations(): boolean 查询是否已忽略电池优化 无(同步)
getManufacturer(): string 查询设备厂商 无(同步)
openOverlaySettings(options) 打开悬浮窗权限设置页 success / fail / complete
openBatteryOptimizationSettings(options) 打开电池优化列表页 success / fail / complete
requestIgnoreBatteryOptimizations(options) 弹出忽略电池优化确认框 success / fail / complete
openAutoStartSettings(options) 打开厂商自启动管理页,未命中兜底应用详情页 success / fail / complete
openAppSettings(options) 打开本应用详情设置页 success / fail / complete

回调结构

success / complete 返回 OpenSettingsResult:

{
    success: boolean,   // 是否成功打开对应入口
    action: string,     // 实际入口:
                        // overlaySettings 悬浮窗权限页(含本应用)
                        // overlaySettingsList 悬浮窗权限列表页
                        // batteryOptimization 电池优化设置页
                        // requestIgnoreBatteryOptimizations 忽略电池优化确认弹窗
                        // alreadyIgnored 已忽略电池优化,无需再设置
                        // autoStartSettings 厂商自启动管理页
                        // appDetails 应用详情页(兜底)
                        // unsupported 当前系统版本无需该设置
                        // none 未能打开任何入口
    message: string     // 提示文案,可直接展示给用户
}

fail 返回 BootStartFail(UniError):errSubject 固定 zy-bootstart,errCode 见「错误码」,errMsg 为错误描述;同时 complete 也会收到该错误对象。

BootStartEnv 结构

{
    enabled: boolean,                   // 是否已开启开机自启(默认 true)
    delay: number,                      // 延迟启动毫秒数(默认 0)
    overlayPermission: boolean,         // 是否已授予悬浮窗权限
    batteryOptimizationIgnored: boolean, // 是否已忽略电池优化
    manufacturer: string,               // 设备厂商
    brand: string,                      // 设备品牌
    androidVersion: number,             // Android API 版本
    supported: boolean                  // 当前平台是否支持(Android 5.0 及以上为 true)
}

注意事项

  • 本插件的开机广播与权限均属原生配置,需使用自定义基座或云打包验证,标准基座下不生效。
  • 自启条件:设备需已安装并启动过一次应用;应用被「强行停止」或清除数据后,需重新打开一次应用才能恢复开机广播。
  • Android 10 及以上限制后台启动界面,开机拉起依赖悬浮窗权限(SYSTEM_ALERT_WINDOW),未授权时可能被系统静默拦截,建议在应用内引导用户开启。
  • 国产 ROM(MIUI / EMUI / ColorOS / OriginOS / Flyme 等)需用户额外允许「自启动」「后台运行」「关联启动」,可用 openAutoStartSettings() 引导。
  • 锁屏状态下拉起应用会停留在锁屏界面之后,需设备无锁屏密码或自行解锁;工控机请关闭锁屏密码。
  • 首次开机验证请断电重启,普通应用重启(杀进程)不会触发开机广播。
  • 延迟启动通过系统闹钟实现,最大 60000 毫秒;开机铃响后若设备已深度休眠,实际触发时间可能略晚于设定值。

错误码

错误码 说明
9300001 参数错误
9300002 打开悬浮窗权限设置页失败
9300003 打开电池优化设置页失败
9300004 打开自启动管理页失败
9300005 打开应用详情页失败

权限说明

权限 用途
android.permission.RECEIVE_BOOT_COMPLETED 接收系统开机完成广播,用于开机后自动拉起应用
android.permission.SYSTEM_ALERT_WINDOW 悬浮窗(显示在其他应用上层),Android 10 及以上允许从后台拉起界面的前提,需用户在系统设置中手动授予
android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 弹出「忽略电池优化」系统确认框,避免应用在后台被系统清理

隐私、权限声明

1. 本插件需要申请的系统权限列表:

android.permission.RECEIVE_BOOT_COMPLETED android.permission.SYSTEM_ALERT_WINDOW android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件仅在本机读取开机自启开关、悬浮窗权限与电池优化状态,不采集、不上传任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无

暂无用户评论。