Android应用程序创建了两个启动器图标

7

我一直在开发一个应用程序,但最近遇到了一个非常令人困惑的问题。当我运行我的应用程序时,突然发现应用程序立即强制关闭。

进一步调查后,我发现在我的启动器中有两个启动图标。其中一个要么恢复应用程序的运行状态,要么如果没有运行则强制关闭它。第二个则像往常一样 - 正常启动并正常恢复应用程序。

我非常困惑,因为我没有做任何导致这个问题的事情(至少我想不到)。我没有在清单文件中更改任何内容,只是实现了几种更快地更改应用程序颜色的方法。

这些问题在我所有的模拟器和设备上都存在,无论我是否关闭手机、手动杀死应用程序或卸载/重新安装应用程序。简单的撤销操作也没有用。澄清一下 - 我希望只有一个启动图标可以正常启动我的应用程序(完全没有特殊操作)。

更新:

现在,从任何一个图标启动都会立即强制关闭应用程序。我在清单文件的两个活动中找到了代码显示并更改了第二行从.LAUNCHER到.DEFAULT,这解决了我的原始问题。然而,现在我总是遇到立即强制关闭的问题...我最初的启动器活动中出现了问题(我目前看不到)...我试图修复这个问题但非常困难(不知道该怎么办),并开始变得非常担心!

更新2:

我找到了问题,并感谢你们所有人的帮助!实际上我有两个不相关的问题在同一时间发生。第一个问题 - 我的启动器中有两个图标:因为我有两个活动带有

5个回答

24

有两个活动

 <intent-filter>
     <action android:name="android.intent.action.MAIN" />
     <category android:name="android.intent.category.LAUNCHER" />
 </intent-filter>

删除第二个


我确实在我的清单中找到了它,并删除它后,第二个启动器图标也被删除了。然而,现在我总是立即强制关闭... - feztheforeigner
更新:现在我在从任何图标启动时都会立即强制关闭。我确实在我的清单中的两个活动中找到了您引用的代码,并将第二行从.LAUNCHER更改为.DEFAULT确实解决了我的原始问题。但是,我仍然总是立即遇到强制关闭...我试图修复这个问题(不知道该怎么做),并开始变得非常担心! - feztheforeigner

3
实际上,Android Launcher 显示的是带有 LAUNCHER 类别的所有活动(Activity),而不是应用程序。
如果您的应用程序包含多个活动,则只需为应用程序的默认活动(初始屏幕)使用 MAIN 操作和 LAUNCHER 类别,而不是在应用程序中使用所有活动相同。如果您在应用程序的每个活动中都使用相同的内容,则该活动将显示在 Android Launcher 中。
请阅读有关 Intent Actions 和 Categories 的文章,您就会明白了。

2

好的,我遇到了同样的问题。问题是当我运行应用程序时,它会创建两个图标,一个名为MyApp,另一个名为SplashActivity。

当我试图卸载SplashActivity(命名的应用程序)时,在确认消息中显示:

SplashActivity是MyApp的一部分,您确定要卸载吗?

经过查找一些参考资料,得出结论,当我们将

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

在任何情况下,安卓都认为这是应用的主入口,并且会为该活动创建一个启动器图标。但名称被保留为“activityName”。
因此,通过更改SplashActivity的Activity标签,最终可以实现...
 <activity
    android:name=".activities.SplashActivity"
    android:label="@string/title_activity_splash"
    android:theme="@style/SplashTheme">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
 </activity>

to

<activity
    android:name=".activities.SplashActivity"
    android:label="@string/app_name"
    android:theme="@style/SplashTheme">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

它解决了我多个图标和启动器图标名称为activityName而不是appName的问题。

0
在我的情况下,类似这样的东西有所帮助。
清单文件中的旧行。
启动画面活动。
<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

主活动

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

还有一个新的

启动画面活动

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

主活动

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
</intent-filter>

只需在主活动中删除下面的行

<category android:name="android.intent.category.LAUNCHER" />

就是这样!


0

在 AndroidMenifest.xml 文件中,您需要删除两个或三个 Android 名称,即

<activity
    android:name=".SplashScreen"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接