Resposta tardia, mas acrescenta alguma profundidade a outras respostas. Tudo se resume ao que você deseja que aconteça com outras atividades iniciadas a partir dessa atividade
Opção 1 - Apenas esta atividade não deve ter histórico de atividade de chamada
Depois é só fazer:
Intent i = new Intent(...);
i.addFlag(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(i);
Opção 2 - Todas as atividades iniciadas a partir dessa atividade específica não devem ter histórico
Em seguida, adicione o manifesto da atividade de chamada:
android:noHistory="true"
Mas se você quiser ter um histórico em uma nova atividade, deverá remover manualmente o sinalizador:
Intent i = new Intent(...);
i.removeFlag(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(i);
Espero que isso esclareça outras respostas :)
finish()
imediatamente depoisstartActivity(...)
. Dessa forma, se o usuário pressionar VOLTAR em 'principal', não haverá nada para onde voltar.