我有2个启动器图标和2个不同活动的应用程序。清单文件如下所示:
....
<activity
android:name=".MyActivity"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"
android:taskAffinity="my.package.com.MyActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MySettings"
android:label="@string/settings"
android:icon="@mipmap/ic_launcher"
android:taskAffinity="my.package.com.MySettings">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
....
我希望MyActivity
成为安装后打开的默认屏幕,因此我使用了.category.DEFAULT
。
action.MAIN
和category.LAUNCHER
将显示两个单独的启动器图标(1个用于MyActivity
,1个用于MySettings
)。
问题:当我打开MyActivity
时,MySettings
屏幕也会被打开。我希望每个启动器图标仅打开其相应的Activity。我已经使用taskAffinity
为每个Activity解决问题,但它没有用。我认为要使taskAffinity
工作,必须以标志Intent.FLAG_ACTIVITY_NEW_TASK
启动Activity,在我的情况下我不能(两者都是启动活动)。
我也尝试使用android:launchMode="singleTask"
,但它也没有用。
如何让每个启动器图标仅打开其活动?
更新抱歉,我意识到MyActivity
无法打开MySettings
,但似乎是这样。 MyActivity
没有用户界面,因此显示的空白屏幕类似于MySettings
。 taskAffinity
工作正确。我已将android:theme="@android:style/Theme.NoDisplay"
添加到MyActivity
以隐藏用户界面。
答案 0 :(得分:0)
只需使用两个不同的图片即可启动您的应用。
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MySettings"
android:label="settings"
android:icon="@drawable/ic_launcher2"
android:taskAffinity="my.package.com.MySettings">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
答案 1 :(得分:0)
我解决了这个问题:
<activity
android:name="andynaz.android.hyperfcalc.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="andynaz.android.hyperfcalc.MainActivity2"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher2">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
我没有使用taskAffinity,但是我指出了Activity类的完全指定名称(除了使用2个不同的图像)。