No método mensagemPersonalizada da nossa classe MainActivity, criamos uma nova Intent com a ação desejada e nela adicionamos a categoria definida anteriormente. Em seguida, incluímos como informação extra o valor informado no EditText. E por fim, iniciamos uma nova activity passando a Intent criada.
public void mensagemPersonalizada(View view) {
Intent intent = new Intent(BoasVindasActivity.ACAO_EXIBIR_BOASVINDAS );
intent.addCategory(BoasVindasActivity.CATEGORIA_BOASVINDAS );
EditText nomeEditText = (EditText) findViewById(R.id.nomeEditText );
String texto = nomeEditText.getText().toString();
intent.putExtra(BoasVindasActivity.EXTRA_NOME_USUARIO , texto);
startActivity(intent);
}
Já que a exibição da mensagem de boas-vindas passou a ser responsabilidade de outra activity, devemos excluir do layout utilizado pela MainActivity o TextView que tinha esse papel. No arquivo de layout activity_main.xml, remova o último TextView declarado, com o id@boasVindasTextView, pois não precisaremos mais dele. As últimas alterações para que nossa BoasVindasActivity possa responder a uma Intent serão feitas no arquivo AndroidManifest.xml.
Vamos adicionar um novo bloco de activity, declarações nas quais estabelecemos que a BoasVindasActivity responde pela ACAO_EXIBIR_USUARIO e também atende a intents que pertencem a CATEGORIA_BOASVINDAS:
<activity android:name="com.example.hello.BoasVindasActivity" >
<intent-filter>
<action android:name="helloworld3.ACAO_EXIBIR_BOASVINDAS" />
<category android:name="helloworld3.CATEGORIA_BOASVINDAS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Quando desejamos que uma activity receba intents implícitas, é obrigatório que no intent filter também seja incluída a categoria android.intent.category.DEFAULT.