Как сделать так, чтобы Android-ярлык «Домой» обходил приложение, на которое указывает история? - PullRequest
3 голосов
/ 11 июня 2009

У меня есть приложение, которое позволяет создавать домашние «ярлыки» для определенного Activity. Оказывается, некоторые из моих пользователей будут использовать приложение, нажимать клавишу «Домой», чтобы сделать что-то еще, а затем использовать один из ярлыков, чтобы вернуться к этому действию. Поскольку приложение все еще находится в памяти, оно просто открывает новый Activity поверх других, и клавиша «Назад» возвращает их назад через всю историю. Что бы я хотел, чтобы это произошло, если они используют ярлык, чтобы эффективно убить историю и получить клавишу возврата, просто выйдите из приложения. Есть предложения?

Ответы [ 2 ]

6 голосов
/ 27 октября 2009

Сначала настройте taskAffinity в Манифесте, чтобы Activity выполнялся как другая "задача":

<activity
        android:taskAffinity="" 
        android:name=".IncomingShortcutActivity">
        <intent-filter>
            <action android:name="com.example.App.Shortcut"/>
            <category android:name="android.intent.category.DEFAULT"/>
        </intent-filter>
</activity>

затем при создании ярлыка установите флажки FLAG_ACTIVITY_NEW_TASK и FLAG_ACTIVITY_CLEAR_TOP. Что-то вроде:

// build the shortcut's intents
final Intent shortcutIntent = new Intent();
shortcutIntent.setComponent(new ComponentName(this.getPackageName(), ".IncomingShortcutActivity"));
shortcutIntent.putExtra(EXTRA_STOPID, Integer.toString(this.stop_id));
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
final Intent intent = new Intent();
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
// Sets the custom shortcut's title
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, custom_title);
// Set the custom shortcut icon
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(this, R.drawable.bus_stop_icon));
// add the shortcut
intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
sendBroadcast(intent);
1 голос
/ 11 июня 2009

Попробуйте добавить Intent.FLAG_NEW_TASK к намерению.

...