Como você faz um “Home” atalho Android desvio do aplicativo momento é a da história?

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

Pergunta

Eu tenho um aplicativo que permite que você crie Início "atalhos" para um Activity específico. Acontece que alguns dos meus usuários vão usar o aplicativo, pressione a tecla de casa para ir fazer outra coisa, em seguida, usar um dos atalhos para pular para essa atividade. Uma vez que o aplicativo ainda está na memória apenas abre o novo Activity em cima dos outros e a tecla "Back" irá levá-los de volta através de toda a história. O que eu gostaria que acontecesse é se eles usam um atalho, em seguida, efetivamente matar a história e ter a chave de volta apenas sair do aplicativo. Alguma sugestão?

Foi útil?

Solução

Em primeiro lugar, configurar o taskAffinity em manifesto para fazer a Activity run como uma "tarefa" diferente:

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

então, ao construir o atalho, definir os sinalizadores FLAG_ACTIVITY_NEW_TASK e FLAG_ACTIVITY_CLEAR_TOP. Algo como:

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

Outras dicas

Tente adicionar Intent.FLAG_NEW_TASK à Intenção.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top