O que é uma intenção no Android?

347
  • O que é uma intenção no Android?
  • Alguém pode elaborar com um exemplo?
  • Quais são os tipos de intenções e por que os estamos usando?
  • Por que as intenções são tão importantes no Android?
Nikunj Patel
fonte
Como o Windows, que é o sistema operacional baseado em mensagens e notifica a entrada do usuário para programar com a mensagem de envio para eles, o Android usa a intenção de fazer isso!
AminM

Respostas:

486

Uma intenção é uma "intenção" de executar uma ação; em outras palavras,

um objeto de mensagem que você pode usar para solicitar uma ação de outro componente do aplicativo

Uma intenção é basicamente uma mensagem para dizer que você fez ou deseja que algo aconteça. Dependendo da intenção, os aplicativos ou o sistema operacional podem estar ouvindo e reagirão de acordo. Pense nisso como um excelente email para vários amigos, nos quais você diz ao seu amigo John para fazer alguma coisa, ou a amigos que podem fazer o X ( "filtros de intenção" ) para fazer o X. As outras pessoas ignoram o email, mas John (ou amigos que podem fazer o X) reagirão a ele.

Para ouvir uma intenção de transmissão (como o telefone tocando ou um SMS é recebido), você implementa um receptor de transmissão ao qual a intenção é transmitida. Para declarar que você pode manipular a intenção de outro aplicativo como "tirar uma foto", declara um filtro de intenção no arquivo de manifesto do seu aplicativo .

Se você deseja desencadear uma intenção de fazer algo, como abrir o discador, dispara uma intenção dizendo que sim.

Chirag
fonte
11
@Chirag Raval Qual é a diferença entre um ouvinte de intenção e ação?
mayooran
11
Por favor, pode explicar novamente a última frase? Se você quiser disparar ..
Shafizadeh
11
Semelhante aos delegados de C #?
Paul
Na verdade, uma ação significa que você pode iniciar um componente de outro componente usando um Intent. É para isso que é usado principalmente.
Sreekanth Karumanaghat
Também para adicionar a isso ... A intenção é assíncrona.
Sreekanth Karumanaghat
165

O que é uma intenção?

Uma Intenção é basicamente uma mensagem que é passada entre componentes (como Atividades , Serviços, Receptores de Transmissão e Provedores de Conteúdo ). Portanto, é quase equivalente aos parâmetros passados ​​para chamadas de API. As diferenças fundamentais entre chamadas de API e componentes de chamada por meio de intenções são:

  • As chamadas de API são síncronas, enquanto as chamadas baseadas em intenção são assíncronas.
  • As chamadas de API são vinculadas em tempo de compilação, enquanto as chamadas baseadas em intenção são vinculadas em tempo de execução.

Obviamente, é possível fazer com que o Intents funcione exatamente como as chamadas da API, usando o que é chamado de intenção explícita, que será explicada mais adiante. Mas, na maioria das vezes, intenções implícitas são o caminho a percorrer e é isso que é explicado aqui.

Um componente que deseja chamar outro precisa expressar apenas sua intenção de fazer um trabalho. E qualquer outro componente que exista e tenha afirmado que ele pode fazer esse trabalho por meio de filtros de intenção é invocado pela plataforma Android para realizar o trabalho. Isso significa que nenhum dos componentes está ciente da existência um do outro, mas ainda pode trabalhar em conjunto para fornecer o resultado desejado para o usuário final.

Essa conexão invisível entre componentes é alcançada através da combinação de intenções, filtros de intenções e a plataforma Android.

Isso leva a enormes possibilidades, como:

  • Misture e combine ou melhor, plug and play de componentes em tempo de execução.
  • Substituindo os aplicativos Android incorporados por aplicativos desenvolvidos personalizados.
  • Reutilização no nível de componente dentro e entre aplicativos.
  • Orientação de serviço para o nível mais granular, se assim posso dizer.

Aqui estão detalhes técnicos adicionais sobre Intents na documentação do Android .

Uma intenção é uma descrição abstrata de uma operação a ser executada. Ele pode ser usado com startActivity para iniciar uma Activity, broadcastIntent para enviá-la a qualquer componente BroadcastReceiver interessado e startService (Intent) ou bindService (Intent, ServiceConnection, int) para se comunicar com um Serviço de Segundo Plano.

Um Intent fornece um recurso para executar a ligação tardia de tempo de execução entre o código em diferentes aplicativos. Seu uso mais significativo é no lançamento de atividades, onde pode ser pensado como a cola entre as atividades. É basicamente uma estrutura de dados passiva contendo uma descrição abstrata de uma ação a ser executada. As principais informações em uma intenção são:

  • ação A ação geral a ser executada, como ACTION_VIEW, ACTION_EDIT, ACTION_MAIN, etc.
  • dados Os dados em que operar, como um registro de pessoa no banco de dados de contatos, expresso como um Uri.

Saber mais

mr.boyfox
fonte
4
Agradeço o uso dos conceitos de ciência da computação nesta explicação. Isso torna a discussão mais concreta e especialmente útil para leitores com um sólido grau em ciência da computação.
Donal Lafferty
49

As intenções são uma maneira de dizer ao Android o que você deseja fazer . Em outras palavras, você descreve sua intenção. As intenções podem ser usadas para sinalizar ao sistema Android que um determinado evento ocorreu. Outros componentes no Android podem se registrar neste evento por meio de um filtro de intenção.

A seguir, são apresentados dois tipos de intenções

1.Intenções explícitas

usado para chamar um componente específico. Quando você sabe qual componente deseja iniciar e não deseja dar ao usuário controle livre sobre qual componente usar. Por exemplo, você tem um aplicativo que possui 2 atividades. Atividade A e atividade B. Você deseja iniciar a atividade B a partir da atividade A. Nesse caso, defina uma atividade de segmentação por intenção explícitaB e use-a para chamá-la diretamente.

2.Intenções implícitas

usado quando você tem uma idéia do que deseja fazer, mas não sabe qual componente deve ser iniciado. Ou se você quiser dar ao usuário a opção de escolher entre uma lista de componentes a serem usados. Se esses Intents forem enviados para o sistema Android, ele procurará por todos os componentes registrados para a ação específica e o tipo de dados. Se apenas um componente for encontrado, o Android iniciará o componente diretamente. Por exemplo, você tem um aplicativo que usa a câmera para tirar fotos. Um dos recursos do seu aplicativo é que você oferece ao usuário a possibilidade de enviar as fotos que ele tirou. Você não sabe que tipo de aplicativo o usuário possui e pode enviar fotos e também deseja dar ao usuário a opção de escolher qual aplicativo externo usar se ele tiver mais de um. Nesse caso, você não usaria uma intenção explícita.

Uma intenção explícita é sempre entregue ao seu destino, independentemente do que ela contém; o filtro não é consultado. Mas uma intenção implícita é entregue a um componente apenas se ele puder passar por um dos filtros do componente

Filtros de intenção

Se um Intents for enviado ao sistema Android, ele determinará os aplicativos adequados para esse Intents. Se vários componentes foram registrados para este tipo de intenções, o Android oferece ao usuário a opção de abrir um deles.

Essa determinação é baseada em IntentFilters. Um IntentFilters especifica os tipos de Intent aos quais uma atividade, serviço ou Receptor de Broadcast pode responder. Um filtro de intenção declara os recursos de um componente. Ele especifica que atividade ou serviço pode fazer e que tipos de transmissão um Receptor pode suportar. Permite que o componente correspondente receba Intents do tipo declarado. Os IntentFilters são normalmente definidos por meio do arquivo AndroidManifest.xml. Para BroadcastReceiver, também é possível defini-los na codificação. Um IntentFilters é definido por sua categoria, ação e filtros de dados. Também pode conter metadados adicionais.

Se um componente não definir um filtro de intenção, ele poderá ser chamado apenas por intenções explícitas.

A seguir, são apresentadas duas maneiras de definir um filtro

1. arquivo manifest

Se você definir o filtro de intenção no manifesto, seu aplicativo não precisará estar em execução para reagir às intenções definidas no filtro. O Android registra o filtro quando seu aplicativo é instalado.

Receptor 2.BroadCast

Se você deseja que seu receptor de transmissão receba a intenção apenas quando o aplicativo estiver em execução. Em seguida, você deve definir seu filtro de intenção durante o tempo de execução (programaticamente). Lembre-se de que isso funciona apenas para receptores de transmissão.

Varun Bhatia
fonte
12

Depois de escrever uma única atividade, é necessário fazer a transição para outra atividade para executar outra tarefa com ou sem informações da primeira atividade.

A plataforma Android permite a transição por meio da Intent Interface.

As palavras são extraídas daqui: Usando o Intent Demo, sugiro que você siga este exemplo, porque eles também forneceram um arquivo de código. para que você possa usá-lo e entender facilmente o mesmo.

Paresh Mayani
fonte
A intenção é mais do que fazer a transição entre as atividades. Seria mais útil fornecer uma visão geral.
Vaddadi Kartick 13/10
@KartickVaddadi Concorde com o seu ponto. Esta foi a minha resposta para o único uso do Intent!
Paresh Mayani
Paresh, o link blog.vimviv.com/android/intent-android não está mais funcionando :(
user2060383
9

Intenção do Android

O Android Intent permite navegar de uma atividade do Android para outra. Com exemplos, este tutorial também fala sobre vários tipos de intenções do Android.

O Android Intent pode ser definido como um simples objeto de mensagem usado para se comunicar de uma atividade para outra.

Intenções definem a intenção de um Aplicativo. Eles também são usados ​​para transferir dados entre atividades.

Um Android Intent pode ser usado para executar as três tarefas a seguir:

  1. Abrir outra atividade ou serviço da atividade atual
  2. Passar dados entre Atividades e Serviços
  3. Delegar responsabilidade para outro aplicativo. Por exemplo, você pode usar o Intents para abrir o aplicativo do navegador para exibir um URL.

A intenção pode ser classificada em duas categorias. Não há palavras-chave para esta categoria e apenas uma ampla classificação de como as intenções do Android são usadas.

Intenção explícita do Android

Intenção explícita do Android é a intenção na qual você define explicitamente o componente que precisa ser chamado pelo sistema Android.

 Intent MoveToNext = new Intent (getApplicationContext(), SecondActivity.class);

Intenção implícita do Android

Intenções implícitas do Android é a intenção em que, em vez de definir os componentes exatos, você define a ação que deseja executar. A decisão de lidar com essa ação é deixada para o sistema operacional. O sistema operacional decide qual componente é melhor executar com intenções implícitas. Vejamos um exemplo:

    Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);

Para mais informações você pode visitar abaixo

http://developer.android.com/reference/android/content/Intent.html

IntelliJ Amiya
fonte
9

De acordo com a documentação deles:

Um Intent é um objeto que fornece ligação em tempo de execução entre componentes separados (como duas atividades). A intenção representa a "intenção de um aplicativo de fazer alguma coisa". Você pode usar intenções para uma ampla variedade de tarefas, mas na maioria das vezes elas são usadas para iniciar outra atividade.

Aqui está o link com o exemplo: http://developer.android.com/training/basics/firstapp/starting-activity.html#BuildIntent

Como o documento descreve, para iniciar uma atividade (você também precisa entender o que é atividade) use a intenção como abaixo

/** Called when the user clicks the Send button */
public void sendMessage(View view) {
    Intent intent = new Intent(this, DisplayMessageActivity.class);
    EditText editText = (EditText) findViewById(R.id.edit_message);
    String message = editText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);
    startActivity(intent);
}
kta
fonte
8

Uma intenção é uma descrição abstrata de uma operação a ser executada. Ele pode ser usado com startActivity para iniciar uma Activity, broadcastIntent para enviá-la a qualquer componente BroadcastReceiver interessado e startService (Intent) ou bindService (Intent, ServiceConnection, int) para se comunicar com um Serviço em segundo plano.

Para mais detalhes, consulte estes links:

1) http://developer.android.com/reference/android/content/Intent.html

2) http://developer.android.com/guide/topics/intents/intents-filters.html

3) http://www.vogella.de/articles/AndroidIntent/article.html

Existem muitos outros artigos disponíveis.

Dinesh Sharma
fonte
5

o que é intenção?

É um tipo de mensagem ou informação que é passada para os componentes. É usado para iniciar uma atividade, exibir uma página da web, enviar sms, enviar email etc.

Existem dois tipos de intenções no android:

Intenção implícita Intenção
explícita

Intenção implícita é usada para chamar os componentes do sistema

Exemplo

Intent i = newIntent(android.content.Intent.ACTION_VIEW,Uri.parse(“http://www.amazon.com”));

startActivity(i);

ExplícitoIntenção é usada para chamar a classe de atividade.

Exemplo

Intenção intent = newIntent (this, SecondActivity.class);

startActivity(intent);

você pode ler mais

http://www.vogella.com/tutorials/AndroidIntent/article.html#intents_overview http://developer.android.com/reference/android/content/Intent.html

Mina Fawzy
fonte
2

Um Intent é uma classe, que vincula as informações para executar algumas ações.

exemplo: passando dados uma atividade para outra atividade quando o usuário executa essas ações em

atividade atual.

madarkife
fonte
1

Em uma visão ampla, podemos definir Intent como

Quando uma atividade deseja iniciar outra, ele cria um objeto chamado Intent, que especifica qual atividade deseja iniciar.

Kartik Goyal
fonte
0

Um aplicativo Android pode conter zero ou mais atividades. Quando seu aplicativo tem mais de uma atividade, você geralmente precisa navegar de um para outro. No Android, você navega entre as atividades pelo que é conhecido como uma intenção. Você pode passar alguns dados para a atividade que deseja iniciar com intenção, usando putExtra ().

Shaon Hasan
fonte
0

No link em papelDeep Dive into Android IPC/Binder Framework atAndroid Builders Summit 2013

A intenção é entendida em algumas linhas pequenas, mas eficazes

  1. O Android suporta uma forma simples de IPC (comunicação entre processos) por meio de intenções
  2. As mensagens de intenção são uma estrutura para comunicação assíncrona entre componentes do Android (atividade, serviço, provedores de conteúdo, receptor de transmissão)
  3. Esses componentes podem ser executados no mesmo ou em diferentes aplicativos (ou seja, processos)
  4. Permite domínios de mensagens de assinatura ponto a ponto e publicação
  5. A intenção em si representa uma mensagem contendo a descrição da operação a ser executada, bem como os dados a serem passados ​​ao (s) destinatário (s).

A partir deste tópico, uma resposta simples da arquiteta andróide Dianne Hackborn afirma que é como data containerrealmente é.

Do ponto de vista da arquitetura android :

Intent é um contêiner de dados usado para comunicação entre processos. Ele é construído sobre o Binderponto de vista da arquitetura do Android.

Zahan Safallwa
fonte
0

As intenções são usadas para iniciar outra atividade de uma atividade. É basicamente usada para vários propósitos, como enviar dados para outra atividade de uma atividade e para propósitos de acionamento.

Eles são basicamente de dois tipos

  1. Intenções implícitas.

  2. Intenções explícitas.

Como iniciante, eu sei disso, acho que isso dará uma idéia básica sobre as intenções do Android

Soorya Prakash
fonte
2
Por favor, leia este link sobre como responder a perguntas.
Bonatti