You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Flutter实现手机解锁后应用自动自启动功能?

Flutter端实现解锁后自启动的可行方案

自启动属于平台原生能力,需要分别针对Android、iOS端做原生层适配,Flutter侧仅需要做少量配置即可:

一、Android端实现(兼容性最好,适配无障碍应用场景)

Android系统本身支持监听开机完成、用户解锁完成的系统广播,可通过原生代码注册广播接收器实现,也可直接用成熟的第三方封装插件降低开发成本:

  • 权限配置:首先在android/app/src/main/AndroidManifest.xml里添加如下权限和广播声明:
<!-- 接收开机完成广播权限 -->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<!-- 解锁屏幕监听权限 -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />

然后在application标签内添加广播接收器声明:

<receiver
    android:name="io.flutter.plugins.autostart.BootCompleteReceiver"
    android:enabled="true"
    android:exported="true">
    <intent-filter>
        <!-- 监听开机完成 -->
        <action android:name="android.intent.action.BOOT_COMPLETED" />
        <!-- 监听用户解锁完成 -->
        <action android:name="android.intent.action.USER_PRESENT" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</receiver>
  • 功能实现:如果不想自行编写原生广播代码,可以直接使用auto_start插件,在pubspec.yaml中引入依赖后,只需要在Flutter入口初始化时调用一次权限申请即可:
import 'package:auto_start/auto_start.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  // 申请自启动权限,会自动跳转到对应厂商的自启动权限设置页
  await AutoStart.getAutoStartPermission();
  runApp(const MyApp());
}

注:国内Android厂商普遍对自启动权限做了定制限制,你的应用属于无障碍属性,可以在引导页明确告知用户需要授予自启动权限才能正常使用,大部分厂商的系统应用商店对无障碍类应用的自启动限制会更宽松。

二、iOS端实现

iOS系统受沙盒机制限制,没有公开的解锁自启动接口,仅能通过两种方式实现近似效果:

  • 如果你开发的是MFi认证的蓝牙配件配套应用,可以通过蓝牙唤醒触发应用启动,普通应用不支持该能力
  • 申请无障碍权限后,可通过系统辅助功能的特定事件触发应用唤醒,但无法保证100%可以在解锁后强制启动,苹果官方对普通应用的后台唤醒、自启动限制非常严格。

内容的提问来源于stack exchange,提问作者Omar Elassal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 12:24:10