Wie kann man ein Android „Home“ Verknüpfung Bypass die App machen es Punkt ist Geschichte ist?
-
13-09-2019 - |
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?
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.