2009-06-10 15 views
3

Ich habe eine App, mit der Sie Home "Verknüpfungen" zu einem bestimmten Activity erstellen können. Es stellt sich heraus, dass einige meiner Benutzer die App verwenden, die Home-Taste drücken, um etwas anderes zu tun, und dann einen der Shortcuts verwenden, um zu dieser Aktivität zurückzukehren. Da die App noch im Speicher ist, öffnet sie einfach die neue Activity über die anderen und die "Zurück" -Taste führt sie durch die gesamte Geschichte zurück. Was ich gerne hätte, wäre, wenn sie eine Verknüpfung verwenden, um den Verlauf zu löschen und den Zurück-Schlüssel zu haben, um die App zu verlassen. Irgendwelche Vorschläge?Wie machst du einen Android "Home" -Kurzbefehl umgehen die App, die es auf die Geschichte zeigt?

Antwort

7

zuerst die taskAffinity im Manifest eingerichtet, um den Activity Lauf als eine andere „Aufgabe“ zu machen:

<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> 

dann, wenn Sie die Verknüpfung erstellen, setzen Sie die FLAG_ACTIVITY_NEW_TASK und FLAG_ACTIVITY_CLEAR_TOP Fahnen. Etwas wie:

// 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

Könntest du es bitte etwas klären? Wo sollte der Code gehen, IncomingShortcutActivity? Wer wird mit der Übertragung umgehen? – Maxim

1

Versuchen Sie, Intent.FLAG_NEW_TASK zum Intent hinzuzufügen.

+0

Nun, das hat mir zumindest einen Teil des Weges dorthin gebracht. Danke –