Come si fa a fare un Android “Home” scorciatoia bypass l'applicazione è punto la sua storia?

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

Domanda

Ho un app che ti permette di creare la casa "scorciatoie" ad un Activity specifica. Si scopre che alcuni dei miei utenti utilizzeranno l'applicazione, premere il tasto a casa per andare a fare qualcosa di diverso, quindi utilizzare uno dei tasti di scelta rapida per tornare indietro a tale attività. Dal momento che l'applicazione è ancora in memoria solo apre la nuova Activity sopra degli altri e il tasto "Indietro" li porterà indietro attraverso tutta la storia. Quello che mi piacerebbe avere accadere è se utilizzare un collegamento poi per uccidere in modo efficace la storia e hanno la chiave appena uscire l'applicazione. Qualche suggerimento?

È stato utile?

Soluzione

In primo luogo, impostare il taskAffinity il manifesto per rendere la corsa Activity come un "compito" diverso:

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

poi, quando si costruisce il collegamento, impostare i flag FLAG_ACTIVITY_NEW_TASK e FLAG_ACTIVITY_CLEAR_TOP. Qualcosa di simile:

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

Altri suggerimenti

Prova ad aggiungere Intent.FLAG_NEW_TASK al Intent.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top