【问题标题】:Android App activities installed as multiple icons安装为多个图标的 Android 应用活动
【发布时间】:2018-12-07 10:05:11
【问题描述】:

我的 Android 应用有 2 个活动。登录屏幕和搜索屏幕。当我在模拟器或设备上部署应用程序时,我看到同一个应用程序的 2 个图标。当我点击图标 1 时,它会打开屏幕 1(登录屏幕),当我点击图标 2 时,它会打开屏幕 2(搜索屏幕)。按逻辑,当我登录时,它应该显示搜索屏幕。不知道我什么时候犯了错误。

【问题讨论】:

    标签: android


    【解决方案1】:

    您的清单文件应该只在您希望有图标的活动中包含这一行:

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

    根据您的描述,听起来这两个活动都有这条线。

    【讨论】:

    • MAIN 不是一个类别;这是一个动作。更一般地说,除非您需要,否则不要在清单中包含活动的 &lt;intent-filter&gt;。对于简单的应用,只有在启动器中需要图标的 Activity 才应该有 &lt;intent-filter&gt;
    • 嗨亚伦,非常感谢您的快速回复。是的,这就是问题所在,该应用程序按预期工作。再次感谢。问候,阿拉文德。 C
    • 您还应该检查引用库项目的清单
    • 感谢您提供的小细节。
    【解决方案2】:

    在您的 mainfest 文件中,当您当时在两个不同的活动标签中有以下标签时,Android 应用程序似乎被安装了两次。

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

    【讨论】:

    • 我遇到了同样的问题,因为我包含了一个库作为项目依赖项,它的 AndroidManifest.xml 包含一个意图过滤器定义 -> 我删除了它,一切都开始正常工作了!
    • 实际上,我在两个不同的活动中都有这个,因为我希望每个活动都表现为一个独立的应用程序。它可以按需要工作。我尝试使用“CREATE_SHORTCUT”,但快捷方式不会留在主屏幕中。
    【解决方案3】:

    @Adrian C 对他的回答发表的评论解决了我们的问题。

    我们的主应用程序的清单文件只有一个intent-filter 标记,仅指定一个活动作为应用程序的启动器活动。

    所以我不得不深入研究......

    我们包含了库项目(幸运的是由我们编写的),其中一个库项目的清单文件在其活动上具有 intent-filter 标记,将该活动指定为启动器活动。

    当我们随后将该库项目包含在我们的主应用程序中(它有自己的 intent-filter 指定启动器活动)时,完整的源代码看到两个 intent-filter 标记将两个活动指定为启动器活动,因此两个应用程序图标是已创建。

    当我们在库项目中删除指定启动器活动的intent-filter 时,第二个应用启动器图标消失了。

    【讨论】:

      猜你喜欢
      • 2013-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-07
      • 2017-01-08
      相关资源
      最近更新 更多