更新记录
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 默认拦截自启动,需要在应用内引导用户逐个打开自启动、后台运行、悬浮窗权限。
使用流程
- 引入插件,调用
getEnv() 读取当前环境(自启开关、延迟、悬浮窗权限、电池优化状态、厂商)。
- 调用
setEnabled(true) 开启自启,setDelay(毫秒) 设置开机后延迟启动时间。
- 按
getEnv() 的结果引导用户授权:hasOverlayPermission() 为 false 时调用 openOverlaySettings()。
isIgnoringBatteryOptimizations() 为 false 时调用 requestIgnoreBatteryOptimizations() 或 openBatteryOptimizationSettings()。
- 国产 ROM 还需调用
openAutoStartSettings() 打开厂商自启动管理页,由用户手动允许。
- 断电或重启设备验证:原生广播会在系统开机完成后自动拉起应用。
用法
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 |
弹出「忽略电池优化」系统确认框,避免应用在后台被系统清理 |