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

Android Launcher更新后存在启动间隔 如何实现更新后自动唤起自定义Launcher

自定义Launcher升级后自动激活解决方案

根因说明

  • 自定义Launcher升级安装过程中,旧版本进程会被系统强制杀死,刚安装完成的新版本无主动启动逻辑时,系统会临时兜底跳转至系统默认桌面
  • 由于你的应用商店与Launcher为同包名,无需跨应用权限即可直接实现自启动逻辑

可行实现方案

方案1:监听自身包升级广播实现自启动

该方案无需依赖应用商店的安装回调,版本覆盖安装后自动触发

  1. 在AndroidManifest.xml中注册静态广播接收器,监听仅本包可接收的ACTION_MY_PACKAGE_REPLACED广播,无需额外权限:
<receiver
    android:name=".PackageUpgradeReceiver"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
    </intent-filter>
</receiver>
  1. 广播接收器中直接拉起Launcher主页面:
class PackageUpgradeReceiver : BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {
        if (intent.action != Intent.ACTION_MY_PACKAGE_REPLACED) return
        val launcherIntent = Intent(context, YourLauncherMainActivity::class.java).apply {
            addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED)
            addCategory(Intent.CATEGORY_HOME)
        }
        context.startActivity(launcherIntent)
    }
}

注意:Android 10及以上系统后台启动Activity需要SYSTEM_ALERT_WINDOW悬浮窗权限,若你的Launcher为系统预装应用,直接在Manifest中声明该权限即可自动获得,无需用户手动授权

方案2:同包名应用商店安装完成直接触发

因为应用商店与Launcher同包名,可在应用商店的安装完成回调逻辑中,直接执行上述启动Launcher主页面的代码,不需要额外注册广播,适配性更强。

适配优化点

  • 若为系统预装Launcher,可提前在/system/etc/permissions目录下配置默认桌面权限,升级后系统会优先保留你的Launcher为默认桌面,不会出现临时跳转系统桌面的情况
  • Android 12及以上版本启动Activity时建议额外添加FLAG_ACTIVITY_CLEAR_TASK标记,避免旧任务栈残留导致跳转异常

内容的提问来源于stack exchange,提问作者Paweł Mańczak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 15:42:02