2009-06-10 25 views
3

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?

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); 
+0

Pourriez-vous s'il vous plaît clarifier un peu? Où le code devrait aller, IncomingShortcutActivity? Qui va gérer la diffusion? – Maxim

1

Essayez d'ajouter Intent.FLAG_NEW_TASK à l'intention.

+0

Eh bien, cela m'a fait partie du chemin au moins. Merci –