Comment faites-vous un androïde « Home » by-pass raccourci l'application il est le point de son histoire?
-
13-09-2019 - |
Question
J'ai une application qui vous permet de créer des raccourcis « Accueil » à un Activity
spécifique. Il se trouve que certains de mes utilisateurs utiliseront l'application, appuyez sur la touche maison pour aller faire quelque chose d'autre, utilisez l'un des raccourcis pour revenir en arrière à cette activité. Depuis l'application est encore en mémoire, il ouvre juste la nouvelle Activity
au-dessus des autres et la touche « Retour » les ramènera à travers toute l'histoire. Ce que je voudrais voir se produire est s'ils utilisent un raccourci puis pour tuer efficacement l'histoire et avoir la clé de retour quitter juste l'application. Toutes les suggestions?
La solution
Tout d'abord, mettre en place le taskAffinity le manifeste pour faire fonctionner de Activity
comme un 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);
Autres conseils
Essayez d'ajouter Intent.FLAG_NEW_TASK
à l'intention.