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

Flutter项目安装后出现双桌面图标,仅一个可用的解决求助

Flutter安卓端出现两个桌面图标问题解决

问题原因

你的AndroidManifest.xml里存在两个带有<category android:name="android.intent.category.LAUNCHER"/>的Activity:

  1. 第一个是Flutter默认的主Activity(代码中可见其intent-filter配置)
  2. 第二个是手动添加的.MyActivity

安卓系统会把每个包含LAUNCHER类别的Activity识别为桌面启动入口,因此生成两个图标。而.MyActivity未正确接入Flutter初始化流程,导致点击后无法打开。

另外,第一个Activity里FLUTTER_NOTIFICATION_CLICK的intent-filter错误添加了LAUNCHER类别,这也可能引发异常,需要修正。

解决方案

方案一:移除无用的.MyActivity

如果.MyActivity是冗余的,直接删除整个Activity节点:

<!-- 删除这段代码 -->
<activity
  android:name=".MyActivity"
  android:theme="@style/LaunchTheme"
  >
  <meta-data
    android:name="io.flutter.embedding.android.NormalTheme"
    android:resource="@style/NormalTheme"
    />
  <intent-filter>
    <action android:name="android.intent.action.MAIN"/>
    <category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>

方案二:保留.MyActivity但移除启动入口

如果.MyActivity有其他用途,去掉它的MAIN和LAUNCHER intent-filter,将其改为普通Activity:

<activity
  android:name=".MyActivity"
  android:theme="@style/LaunchTheme"
  >
  <meta-data
    android:name="io.flutter.embedding.android.NormalTheme"
    android:resource="@style/NormalTheme"
    />
  <!-- 移除MAIN和LAUNCHER的intent-filter -->
</activity>

修正通知点击的intent-filter

把第一个Activity里FLUTTER_NOTIFICATION_CLICK的intent-filter中的LAUNCHER改成DEFAULT:

<intent-filter>
    <action android:name="FLUTTER_NOTIFICATION_CLICK"/>
    <category android:name="android.intent.category.DEFAULT"/>
</intent-filter>

修改后的完整AndroidManifest.xml示例

<application>
    <activity
        android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
        android:hardwareAccelerated="true"
        android:windowSoftInputMode="adjustResize"
        tools:ignore="WrongManifestParent">
        <meta-data
            android:name="io.flutter.embedding.android.NormalTheme"
            android:resource="@style/NormalTheme"
            />
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
        <intent-filter>
            <action android:name="FLUTTER_NOTIFICATION_CLICK"/>
            <category android:name="android.intent.category.DEFAULT"/>
        </intent-filter>
    </activity>

    <meta-data
        android:name="flutterEmbedding"
        android:value="2" />

    <!--fb login -->
    <meta-data android:name="com.facebook.sdk.ApplicationId" 
        android:value="@string/facebook_app_id"/>
    <meta-data android:name="com.facebook.sdk.ClientToken" 
        android:value="@string/facebook_client_token"/>

    <activity android:name="com.facebook.FacebookActivity"
        android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
        android:label="@string/app_name" />
    <activity
        android:name="com.facebook.CustomTabActivity"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="@string/fb_login_protocol_scheme" />
        </intent-filter>
    </activity>

</application>
</manifest>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:05:25