Wie kann man ein Android „Home“ Verknüpfung Bypass die App machen es Punkt ist Geschichte ist?

StackOverflow https://stackoverflow.com/questions/978172

Frage

Ich habe eine Anwendung, die Sie Zuhause „Abkürzungen“ zu einem bestimmten Activity erstellen kann. Es stellt sich heraus, dass einige meiner Benutzer die App verwenden, die Home-Taste treffen, etwas anderes zu gehen tun, dann eine der Verknüpfungen verwenden, um zurück zu dieser Aktivität zu springen. Da die App noch im Speicher öffnet es gerade die neue Activity oben auf den anderen und die „Back“ -Taste wird sie wieder durch die ganze Geschichte nehmen. Was ich möchte passieren haben ist, wenn sie eine Verknüpfung dann verwenden, um effektiv die Geschichte zu töten und haben die Zurück-Taste nur die App verlassen. Irgendwelche Vorschläge?

War es hilfreich?

Lösung

Zuerst gründen die taskAffinity das Manifest 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 die Verknüpfung erstellen, setzen Sie die FLAG_ACTIVITY_NEW_TASK und FLAG_ACTIVITY_CLEAR_TOP Fahnen. So 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);

Andere Tipps

Versuchen Sie das Hinzufügen Intent.FLAG_NEW_TASK zum Intent.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top