Операция Android неправильно переопределена для задачи приложения

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

Эта деятельность запускается из пантомимы. Если другое приложение запускает действие, оно должно отображаться в той же задаче. Однако деятельность всегда заново связана с задачей ее применения. Это несмотря на явную настройку allowTaskReparenting в false,

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

Как заставить действие запускаться только поверх действия, в котором оно было запущено, отдельно от других действий того же приложения? Вот соответствующая часть AndroidManifest.xml:

<activity
    android:name="com.matthewmitchell.peercoin_android_wallet.ui.RestoreWalletActivity"
    android:configChanges="orientation|keyboard|keyboardHidden"
    android:theme="@style/My.Theme.Dialog"
    android:allowTaskReparenting="false" >
    <intent-filter android:label="@string/import_keys_intent_filter_action" >
        <action android:name="android.intent.action.VIEW" />

        <category android:name="android.intent.category.DEFAULT" />

        <data android:mimeType="application/x-peercoin-wallet-backup" />
        <data android:mimeType="application/octet-stream" />
    </intent-filter>
</activity>

1 ответ

Решение

Вы должны установить android:taskAffinity="" в <activity> тег в манифесте. Если вы этого не сделаете, Activity будет по умолчанию taskAffinity, что совпадает со всеми другими действиями в вашем приложении. Настройка taskAffinity пустой строке говорит Android, что это Activity не предпочитает быть в какой-то конкретной задаче.

Это не хорошо документировано, но taskAffinity козыри большинства других настроек. Android всегда будет пытаться найти задачу с тем же taskAffinity запустить Activity в.

Другие вопросы по тегам