0

我有2個發射器圖標和2個不同的活動的應用程序。清單文件是象下面這樣:Android應用程序與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.MAINcategory.LAUNCHER將顯示兩個單獨的啓動器圖標(1代表MyActivity,1代表MySettings)。

問題:當我打開MyActivity時,MySettings屏幕也被打開。我希望每個啓動器圖標僅打開其相應的活動。我已經使用taskAffinity爲每個活動解決問題,但它沒有奏效。我認爲要使taskAffinity工作,活動必須開始與國旗Intent.FLAG_ACTIVITY_NEW_TASK,我不能在我的情況下(都是啓動活動)。

我也試過使用android:launchMode="singleTask",但它也沒有工作。

如何讓每個啓動器圖標僅打開其活動?

更新:對不起,我認識到MyActivity沒有打開MySettings,它似乎是如此。 MyActivity沒有UI,所以顯示的空白屏幕與MySettings類似。 taskAffinity工作正確。我已將android:theme="@android:style/Theme.NoDisplay"添加到MyActivity以隱藏UI。

回答

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> 
+0

@Jemshit我編輯了我的答案。它按照您的要求工作。 – Shekhar

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,但我表示完全指定活動類的名稱(不是使用2倍不同的圖像等)。

相關問題