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

AOSP开箱即用体验(设置向导)实现及Intent配置问题咨询

AOSP 设置向导(开箱即用体验)开发指南与问题排查

核心问题诊断

你当前的Manifest配置把HOME、DEFAULT和SETUP_WIZARD类别放在同一个intent-filter里,这会让系统把你的MainActivity识别为Home Launcher候选应用。所以无论USER_SETUP_COMPLETE和DEVICE_PROVISIONED的状态如何,只要系统需要启动Home界面(比如开机后、按Home键),都会触发这个Activity——这就是为什么你看到的是带HOME类别的Intent,而非SETUP_WIZARD的。

正确的Manifest配置方式

设置向导与Home Launcher的Intent处理必须分开,不能共用同一个intent-filter。正确的配置应该为设置向导单独创建一个Activity(或者拆分现有Activity的Intent过滤):

示例代码

<!-- 专门处理设置向导的Activity -->
<activity
    android:name=".SetupWizardActivity"
    android:exported="true"
    android:excludeFromRecents="true">
    <!-- 设置向导专属Intent Filter,优先级高于系统默认向导 -->
    <intent-filter android:priority="100">
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.SETUP_WIZARD" />
    </intent-filter>
</activity>

<!-- 如果你的应用需要同时作为Home Launcher(可选,通常设置向导不需要) -->
<activity
    android:name=".MainActivity"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.HOME" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

关键说明

  • 把SETUP_WIZARD类别单独放在一个Intent Filter中,确保系统只有在设备未完成配置时才会触发它。
  • 设置android:priority="100"(数值越高优先级越高),保证系统优先选择你的设置向导,而非AOSP默认的SetupWizard应用。

USER_SETUP_COMPLETE与DEVICE_PROVISIONED的作用

这两个系统设置是控制设置向导触发的核心开关:

  • DEVICE_PROVISIONED(全局级别):标记设备是否完成初始硬件/系统配置,恢复出厂后默认值为0(未完成),完成设置后需设为1。
  • USER_SETUP_COMPLETE(用户级别):标记当前用户是否完成个人化配置(比如账号、壁纸等),多用户场景下每个用户独立,默认值为0。

系统启动时会同时检查这两个值:只有当两者均为0时,才会发送带有SETUP_WIZARD类别的MAIN Intent。

测试与验证方法

你可以通过ADB命令手动修改配置状态,验证设置向导的触发逻辑:

# 重置设备配置状态(模拟恢复出厂)
adb shell settings put global device_provisioned 0
adb shell settings put secure user_setup_complete 0

# 重启设备,此时系统应该启动你的设置向导
adb reboot

# 完成设置后,手动标记配置完成(避免重复触发)
adb shell settings put global device_provisioned 1
adb shell settings put secure user_setup_complete 1

额外注意事项

  • 你的设置向导应用需要放置在AOSP的system/app或priv-app目录下,并且使用系统签名,否则无法修改USER_SETUP_COMPLETE和DEVICE_PROVISIONED这些安全设置。
  • 不要在设置向导Activity中保留HOME类别,否则会干扰系统的Home Launcher逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 15:03:40