0

У меня есть приложение с двумя значками запуска и двумя различными действиями. Файл манифеста, как, как показано ниже:Android-приложение с двумя значками запуска с отдельной задачей. Устранение

.... 
    <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 должны показать две отдельные иконки Launcher (1 для MyActivity, 1 для MySettings).

Проблема: Когда я открываю MyActivity, MySettings экран также открывается. Я хочу, чтобы каждый значок запуска отображал только его соответствующую активность. Я использовал taskAffinity для каждой задачи для решения проблемы, но это не сработало. Я думаю, чтобы сделать taskAffinity работы, действие должно быть начато с флага Intent.FLAG_ACTIVITY_NEW_TASK, которого я не могу в моем случае (оба запускают деятельность).

Я также пытался использовать android:launchMode="singleTask", но он тоже не работал.

Как сделать каждый значок пусковой установки, чтобы открыть только ее активность?

UPDATE: К сожалению, я понял, MyActivity не открывается MySettings, он казался таким же. MyActivity не имеет пользовательского интерфейса, поэтому он показал пустой экран, который похож на MySettings. taskAffinity работает правильно. Я добавил android:theme="@android:style/Theme.NoDisplay" в MyActivity, чтобы скрыть интерфейс.

ответ

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

@ Джемшит Я отредактировал свой ответ. Его работа согласно вашему требованию. – 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 различных изображений).

Смежные вопросы