安卓应用多个图标安装问题

56

我的安卓应用有两个活动页面,一个登录页面和一个搜索页面。当我在模拟器或设备上部署该应用时,我会看到同一应用的两个图标。当我点击图标1时,它会打开屏幕1(登录页面),而当我点击图标2时,它会打开屏幕2(搜索页面)。根据逻辑,当我登录后应该显示搜索页面。不确定我犯了哪个错误。

3个回答

92

你的清单文件只应在你想要有图标的活动中添加此行:

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

根据您的描述,似乎这两个活动都有这行代码。


6
MAIN 不是一种类别,而是一个动作。更普遍地说,除非需要,否则不要在清单文件中为一个活动包括 <intent-filter>。对于简单的应用程序,只有需要在启动器中显示图标的活动应该有一个 <intent-filter> - CommonsWare
嗨,Aaron,非常感谢您的快速回复。是的,这就是问题所在,应用程序按预期工作。再次感谢。问候, 阿拉温德。C - Aravindan. C
3
你应该检查清单文件,以查看是否有引用的库项目。 - Adrian C.
感谢提供这些细节。 - Samir

27

如果在你的Manifest文件中,两个不同的<activity>标签中都有以下标签,则安装Android应用似乎会发生两次:

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

6
因为我将一个库作为项目依赖项,并且其中的AndroidManifest.xml文件包含一个意图过滤器定义,所以我遇到了相同的问题。我移除了它,一切都开始正常工作了! - notsoux
1
实际上,我在两个不同的活动中都有这个,因为我希望每个都表现得像一个独立的应用程序。它按预期工作。我尝试使用“CREATE_SHORTCUT”,但快捷方式不会停留在主屏幕上。 - Luis A. Florit

5
@Adrian C在他的答案中提到的评论解决了我们的问题。
我们主应用程序的清单文件只有一个intent-filter标签,将一个活动作为应用程序的启动器活动指定。
因此我不得不深入研究...
我们包含了库项目(幸运的是由我们编写),其中一个库项目的清单文件具有在其活动上指定该活动为启动器活动的intent-filter标签。
当我们在我们的主应用程序中包含该库项目时(它具有自己的intent-filter,指定一个启动器活动),完整的源代码看到了两个intent-filter标签,指定了两个启动器活动,因此创建了两个应用程序图标。
当我们在库项目中删除指定启动器活动的intent-filter时,第二个应用程序启动器图标消失了。

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