Caso prefira, você encontrará todo esse material, em inglês, no site do Developer Android. A tradução e comentários dos materiais eu faço livremente para ajudar a comunidade que fala português.

sexta-feira, 15 de abril de 2011

Intents e Intent Filters - Parte 01

Três dos principais componentes de uma aplicação - atividades, serviços e broadcast receivers - são ativados através de mensagens, chamadas intents. Mensagens intent são um facilitador para rodar bindings entre componentes da mesma ou de diferentes aplicações. O intent, um objeto Intent, é uma estrutura de dados passiva que comporta uma descrição abstrata da operação a ser realizada -ou, nos casos de broadcasts, uma descrição de algo que aconteceu e que é anunciado. Existem mecanismos separados para entregar intents para cada tipo de componente:

  • Um objeto intent é passado para Context.startActivity() ou Activity.startActivityForResult() para lançar uma atividade ou receber uma atividade existente para fazer algo novo (ele pode também ser passado por Activity.setResult() para retornar informações para a atividade que chamou o startActivityForResult().
  • Um objeto Intent é passado para Context.startService() para iniciar um serviço ou entregar novas instruções para um serviço de saída. Similarmente, um intent pode ser passado para Context.bindService() para estabelecer uma conexão entre o componente que chama e o serviço alvo. Ele pode opcionalmente iniciar o serviço se ele já não estiver rodando.
  • Objetos intent passados para qualquer método broadcast (como Context.sendBroadcast(), Context.sendOrderedBroadcast() ou Context.sendStickyBroadcast()) são entregues para todos os broadcast receivers interessados. Muitos tipos de broadcasts originam-se em código de sistema.
Em cada caso, o sistema Android encontra a atividade apropriada, serviço ou broadcast receiver para responder ao intent, instanciando-os se necessário. Não existe problema nessas mensagens de sistema: broadcast intents são entregues apenas para broadcast receivers, nunca para atividades ou serviços. Um intent passado para startActivity() é entregue apenas para uma atividade, nunca para um serviço ou broadcast receiver e assim por diante.

Objetos Intent

Um objeto intent é um conjunto de informações. Ele contém informações de interesse para o componente que o recebe (como uma ação a ser tomada e os dados de argumento) mais informações de interesse para o sistema Android (como qual categoria de componente deve manusear o intent e instruções em como lançar a atividade alvo). Mas, ele deve conter principalmente:

Nome de Componente

O nome do componente que deve manusear o intent. Esse campo é o objeto ComponentName - uma combinação de um nome completamente qualificado do componente alvo e o nome do pacote setado no arquivo de manifesto da aplicação onde o componente reside.

O nome de componente é opcional. Se ele é configurado, o objeto de Intent é entregue para uma instância da classe designada. Se ele não é configurado, o Android usa outra informação do objeto Intent para localizar um alvo que possa recebê-lo.

O nome do componente pode ser configurado por setComponent(), setClass(), setClassName() e lido por getComponent().

Ação

Uma string nomeando a ação a ser realizada -ou, no caso de broadcast intents, a ação que está sendo executada e reportada. A classe intent define um número de constantes de ação, incluindo esses:
ConstantTarget componentAction
ACTION_CALLactivityInicia uma chamada de telefone
ACTION_EDITactivityMostra dados para o usuário editar
ACTION_MAINactivityInicia a atividade que está marcada como inicial em modo vazio e com nenhum retorno
ACTION_SYNCactivitySincroniza dados no servidor a partir do dispositivo móvel
ACTION_BATTERY_LOWbroadcast receiverMostra um aviso que a bateria está baixa
ACTION_HEADSET_PLUGbroadcast receiverMostra que um fone de ouvido foi plugado no dispositivo ou desplugado
ACTION_SCREEN_ONbroadcast receiverA tela foi ligada
ACTION_TIMEZONE_CHANGEDbroadcast receiverAs configurações da zona de tempo foi mudada
Data

A URI dos dados a serem capturados e o MIME type para eles.

Category

Uma string contendo informações adicionados sobre o tipo de componentes que devem ser manuseados pelo intent.


ConstantMeaning
CATEGORY_BROWSABLEA atividade alvo pode ser chamada de maneira segura pelo navegador para mostrar dados referenciados por um link (imagem ou email, etc)
CATEGORY_GADGETA atividade pode ser embarcada dentro de outra atividade que hospede gadgets.
CATEGORY_HOMEA atividade mostra a tela home, a primeira tela que o usuário vê quando o dispositivo é ligado ou quando a tela HOME é pressionada.
CATEGORY_LAUNCHERA atividade pode ser a atividade inicial ou uma tarefa e é listada no tipo da aplicação launcher.
CATEGORY_PREFERENCEA atividade alvo é o painel de preferências


Extras

Pares chave-valor com informações adicionais que devem ser entregues para o componente manuseando um intent.

Flags

Flags de tipos diversos. 

0 comentários:

Portions of this page are modifications based on work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License.
Related Posts Plugin for WordPress, Blogger...