Android Intent Filter

Dando continuidade as intenções que acontecem nas aplicações Android,  comentarei sobre os filtros de inteções.

Quando utilizamos uma Intent (ou intenção) para abrir uma nova tela, ou activity, é necessário referenciar a classe diretamente, como no exemplo abaixo:

Intent intent = new Intent(this, SegundoAndroid.class);

startActivity(intent);

O trecho de código acima fará com que a activity/tela SegundoAndroid seja carregada e colocada no topo da “pilha de atividades”. Este exemplo funcionará perfeitamente, temos o conhecimento de qual activity estamos executando, mas e se não tivessemos,  como faríamos?

O Android nos da à possibilidade de mapear a activity com uma ação. Este mapeamento é similar ao que acontece com os Servlets em aplicações Java Web, onde cada Servlet deve ser acessado através de uma URL mapeada.

Por padrão algumas actions já estão configuradas no Andoid, com é o exemplo da android.intent.action.MAIN que sinaliza que uma determinada activity será o ponto de partida para a aplicação. O exemplo abaixo mostra o uso da action andoid.intent.action.MAIN:

Neste exemplo a activity PrimeiroAndoid será utilizada como o ponto de partida para a aplicação. Observe que o elemento category com o valor android.intent.category.LANCHER também esta sendo utilizado, este elemento em conjunto com a ação permite que o android descubra o que a intent deseja realizar.  Resumindo:

- android.intent.action.MAIN: Atribui a activity a capacidade de ser tratada como um ponto de partida para a aplicação.

- android.intent.category.LANCHER: Em conjunto com a action MAIN informa que a activity aparecerá na tela home do dispositivo com uma aplicação que pode ser executada.

Na documentação é possível encontrar todas as constantes que podem ser utilizadas.

O grande lance dos filtros de intenção é que tanto podemos utilizar as ações nativas do android, como podemos criar nossos próprios filtros.  Um exemplo prático seria ao invés de chamar a activity diretamente pela classe, poderíamos  dar um filtro de intenção para ela, por exemplo:

1º – Criar uma activity chamada SegundoAndroid.

2º – Mapear, ou setar, a ação no arquivo manifestAndroid.xml.

3º – Fazer a chamada ao activity através do filtro.

Simples! Apenas configuramos o activity e o filtro. Observe que a action esta com o valor SEGUNDO_ANDROID, poderia ser qualquer valor.

Se executar o exemplo agora receberá um erro conforme pode ser visto abaixo:

O erro acontece por que é necessário definir pelo menos uma categoria para o <intent-filter>, se nenhuma for definida o intent criado por padrão terá android.intent.category.DEFAULT como categoria, desta forma, somos obrigados a declarar a categoria DEFAULT no <intent-filter>:

Pronto, definido a categoria android.intent.category.DEFAULT, que é padrão, e uma outra (CATEGORIA_ANDROID). A chamada ficará da seguinte forma:

Intent intent = new Intent(“SEGUNDO_ANDROID“);
intent.addCategory(“CATEGORIA_ANDROID“);
startActivity(intent);

Como poder ser visto não é complexo, é ate simples demais.

Abraço a todos e ate a próxima.

Uma resposta

  1. [...] Android Intent Filter [...]

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.