Objetivo: Como já vimos nos outros laboratórios, as aplicações podem se comunicar com outras no sistema Android através da classe

“Intent”. Vamos aprender neste laboratório como fazer uma Activity criada por nós responder estímulos de qualquer aplicação. Passo a passo: 1) Abra o “Eclipse IDE” 2) Crie um novo Projeto Android com os seguintes dados (se tiver dúvidas sobre a criação de um novo projeto, por favor, verifique o “Laboratório 4 – Criando um projeto Olá Mundo”): Project Name: IntentFilter Build Target: Google APIs Application name: IntentFilter Package name: br.com.curso.android.intentfilter Create Activity: Principal Min SDK Version: 8 3) Abra o arquivo “/res/layout/main.xml”, arraste um componente “<Button>”, ajuste o texto para “Enviar Intent”. Depois acerte a propriedade “android:onClick” para “enviarIntent”

4) Crie uma nova Activity chamada “Atividade2”: crie um layout xml em “/res/layout/” chamado “atividade2.xml” como “LinearLayout”, arraste um componente “<TextView>” e coloque o texto de “Esta é a atividade 2”. (Caso tenha dúvidas sobre como criar uma nova Activity, por favor refaça o laboratório que trata deste assunto).

Mini curso Android – Rodrigo Lopes Ferreira (rodrigo.lopes.ferreira@hotmail.com). Página 1 de 3

5) Crie uma nova classe Java chamada “Atividade2.java” e ajuste o código conforme imagem abaixo:

6) Mapeie a nova Activity no arquivo “AndroidManifest.xml”, conforme imagem abaixo:

Nota: A tag “<intent-filter>” é o segredo para que a nossa Activity responda a estímulos do sistema. Definimos a propriedade “<action android:name>” para “ATIVIDADE_2”; isto significa que quando qualquer aplicação criar uma nova Intent que envie uma act “ATIVIDADE_2”, a nossa Activity irá ser notificada pelo sistema operacional e entrar em ação. Curiosidade: Os estímulos padrão do Android também são enviados desta forma, por exemplo, quando chega uma ligação ou um SMS, o sistema operacional do Android envia uma Intent com um act padrão com para que qualquer Activity registrada possa filtrar e ser acionada. Isto significa que é possível substituir qualquer aplicação nativa do telefone, basta que você mapeie o evento correto. 7) Agora precisamos codificar o método “enviarIntent” na classe “Principal.java” para que quando o usuário clicar no botão, a Intent seja enviada para o sistema operacional (lembre-

Mini curso Android – Rodrigo Lopes Ferreira (rodrigo.lopes.ferreira@hotmail.com). Página 2 de 3

se que o método “enviarIntent” foi mapeado na propriedade “android:onClick” do “<Button>” - vide passo 3):

8) Perceba que o método “enviarIntent” cria uma nova Intent passando como parâmetro (act) o texto “ATIVIDADE_2”, que é exatamente o mesmo que mapeamos na propriedade “<action android:name>” da “Atividade2” no arquivo “AndroidManifest.xml”. Isto envia uma mensagem para o sistema operacional que irá notificar qualquer Activity interessada neste sinal. 9) Execute a aplicação no emulador (RunAs → Android Application) 10) Clique no botão “Enviar Intent” e veja que a “Atividade2” surgirá na tela 11) Olhe o LogCat e veja que foi enviada uma Intent act=”ATIVIDADE_2” para o sistema operacional; qualquer Activity que estivesse registrada para reagir a este act, mesmo que fosse outra aplicação que você não tem controle seria acionada; caso existam mais de uma Activity registrada, o Android exibe uma lista para que o usuário escolha qual aplicação ele deseja que seja executada.

Curiosidade: Você pode substituir aplicativos padrão do sistema Android desta forma; por exemplo, quando o usuário pressiona o botão “Home” do dispositivo, o Android envia um act “android.intent.action.MAIN”. Se você quiser que sua aplicação seja a tela inicial, basta mapear no arquivo “AndroidManifest.xml” um “<action android:name>” com este nome. 12) Parabéns. Você agora já sabe como enviar Intents para o sistema operacional do Android e também sabe como mapear suas Acvtivities para que elas sejam acionadas por eles. Pesquise mais sobre o assunto! Mãos à Obra!
Mini curso Android – Rodrigo Lopes Ferreira (rodrigo.lopes.ferreira@hotmail.com). Página 3 de 3

Sign up to vote on this title
UsefulNot useful