J'ai une application qui vous permet de créer Home "raccourcis" à un Activity
spécifique. Il s'avère que certains de mes utilisateurs vont utiliser l'application, appuyer sur la touche d'accueil pour aller faire autre chose, puis utiliser l'un des raccourcis pour revenir à cette activité. Comme l'application est toujours en mémoire, elle ouvre simplement le nouveau Activity
par-dessus les autres et la touche "Retour" les ramènera à travers toute l'histoire. Ce que je voudrais avoir, c'est que s'ils utilisent un raccourci, pour tuer efficacement l'histoire et que la clé de retour sorte de l'application. Aucune suggestion?Comment faites-vous un raccourci Android "Home" pour contourner l'application dont il est question dans l'historique?
3
A
Répondre
7
Tout d'abord, mis en place le taskAffinity dans le manifeste de faire le Activity
terme comme une autre « tâche »:
<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>
puis, lors de la construction du raccourci, définissez les drapeaux FLAG_ACTIVITY_NEW_TASK
et FLAG_ACTIVITY_CLEAR_TOP
. Quelque chose comme:
// 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
Essayez d'ajouter Intent.FLAG_NEW_TASK
à l'intention.
+0
Eh bien, cela m'a fait partie du chemin au moins. Merci –
Pourriez-vous s'il vous plaît clarifier un peu? Où le code devrait aller, IncomingShortcutActivity? Qui va gérer la diffusion? – Maxim