1

我有带有 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屏幕也被打开。我希望每个启动器图标仅打开其相应的活动。我已经使用taskAffinity每个活动来解决问题,但它没有用。我认为要进行taskAffinity工作,活动必须以标志开始,Intent.FLAG_ACTIVITY_NEW_TASK在我的情况下我不能(两者都是启动活动)。

我也尝试过使用android:launchMode="singleTask",但也没有用。

如何使每个启动器图标仅打开其 Activity ?

更新:对不起,我意识到MyActivity没有打开MySettings,但似乎如此。MyActivity没有 UI,所以它显示类似于 的空白屏幕MySettingstaskAffinity工作正常。我已经添加android:theme="@android:style/Theme.NoDisplay"MyActivity隐藏 UI。

4

2 回答 2

1

只需使用两个不同的图像来启动您的应用程序。

<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>
于 2015-07-10T13:18:09.517 回答
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 个不同的图像)。

于 2015-07-10T13:27:24.787 回答