如何获得多个图标以在一个应用程序中启动不同的活动?
我有一个应用程序与两个活动,我想能够有两个图标出现在启动器,每个启动应用程序内的各自的活动。
具体来说,我想要一个图标启动我的主应用程序,另一个图标启动我的设置活动。 这可能吗?
这是我迄今为止所尝试的:
<activity android:label="MyApp" android:name=".MyApp"> <intent-filter> <action android:name=".MyApp"/> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <activity android:label="Settings" android:name=".Settings"> <intent-filter> <action android:name=".Settings"/> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity>
这会创build两个启动器图标,但它们都运行我的主应用程序,而不是运行我的设置应用程序的第二个图标。 我试过只是有启动类别,但我没有得到一个图标,所以它看起来像我需要的主要行动以及。
这是正确的方法,还是应该在清单中声明两个应用程序?
你需要做的是在另一个任务中启动你的设置活动。 您可以通过指定其任务关系来完成此操作。 这是通过属性android:taskAffinity
。 默认情况下,所有活动共享相同的任务关系,默认为清单中指定的主包。 在您的设置活动中,您可以指定android:taskAffinity="your.own.package.SettingsTask"
以使设置活动在其自己的任务中启动。
额外的文件。
你一定会朝着正确的方向前进。 这就是我所拥有的(被截断,因为当我为快速访问而开发时,我已经把所有的活动都放在了列表中):
<activity android:name=".DeckDrill" android:label="DeckDrill"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".DeckList" android:label="DeckList"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
我认为可能发生的事情是来自你的动作元素的干扰,这些动作元素指定你的class级的名字。 我很确定动作和类别需要引用常量。 我不知道这会如何导致你所看到的,但你可以尝试删除它们。 除此之外,你几乎拥有我所拥有的东西。