Подтвердить что ты не робот

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

У меня есть приложение с двумя действиями, и я хотел бы иметь два значка в панели запуска, каждый из которых запускает соответствующую деятельность в приложении.

В частности, я хочу, чтобы один значок запускал мое основное приложение, а другой значок запускал мои настройки. Возможно ли это?

Вот что я пробовал до сих пор:

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

Это создает две иконки запуска, но оба они запускают мое основное приложение вместо второго значка, запускающего мое приложение настроек. Я пробовал просто иметь категорию пусковой установки, но тогда у меня нет значка, поэтому похоже, что мне тоже нужно основное действие.

Является ли это правильным подходом или я должен объявлять два приложения в манифесте?

4b9b3361

Ответ 1

Что вам нужно сделать, так это запустить свою активность в другой задаче. Вы можете сделать это, указав его близость к задаче. Это делается с атрибутом android:taskAffinity. По умолчанию все действия имеют одинаковое сходство задач, которое по умолчанию соответствует основному пакету, указанному в манифесте. В своей деятельности по настройкам вы можете указать android:taskAffinity="your.own.package.SettingsTask", чтобы запуск активности настроек в своей собственной задаче.

Дополнительная документация.

Ответ 2

Вы определенно идете в правильном направлении. Это то, что у меня (усечено, потому что у меня есть все мои действия в списке, пока я готов к быстрому доступу):

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

Я думаю, что может произойти вмешательство из ваших элементов действия, которые определяют имя вашего класса. Я уверен, что действия и категории должны ссылаться на константы. Я не знаю, как это приведет к тому, что вы видите, но вы можете попробовать их удалить. Кроме этого, у вас в значительной степени есть то, что у меня есть.