Qu'est-ce qu'une intention dans Android?

347
  • Qu'est-ce qu'une intention dans Android?
  • Quelqu'un peut-il élaborer avec un exemple?
  • Quels sont les types d'intentions et pourquoi les utilisons-nous?
  • Pourquoi les intentions sont-elles si importantes dans Android?
Nikunj Patel
la source
Comme Windows qui est un système d'exploitation basé sur des messages et notifie l'entrée utilisateur au programme en leur envoyant un message, Android utilisant l'intention de le faire!
AminM

Réponses:

486

Une intention est une "intention" d'exécuter une action; en d'autres termes,

un objet de messagerie que vous pouvez utiliser pour demander une action à partir d'un autre composant d'application

Une intention est essentiellement un message pour dire que vous avez fait ou que quelque chose se passe. Selon l'intention, les applications ou le système d'exploitation peuvent l'écouter et réagir en conséquence. Considérez-le comme un e-mail explosif à un groupe d'amis, dans lequel vous dites à votre ami John de faire quelque chose, ou à des amis qui peuvent faire X ( "filtres d'intention" ), à faire X. Les autres gens ignoreront l'e-mail, mais John (ou des amis qui peuvent faire X) y réagiront.

Pour écouter une intention de diffusion (comme la sonnerie du téléphone ou la réception d'un SMS), vous implémentez un récepteur de diffusion , auquel l'intention sera transmise. Pour déclarer que vous pouvez gérer l'intention d'une autre application comme "prendre une photo", vous déclarez un filtre d'intention dans le fichier manifeste de votre application .

Si vous voulez déclencher une intention de faire quelque chose, comme faire apparaître le composeur, vous déclenchez une intention en disant que vous le ferez.

Chirag
la source
1
@Chirag Raval Quelle est la différence entre un auditeur d'intention et d'action?
Mayooran
1
Pouvez-vous expliquer à nouveau la dernière phrase? Si vous voulez tirer ..
Shafizadeh
1
Similaire aux délégués C #?
Paul
En fait, une action signifie que vous pouvez démarrer un composant à partir d'un autre composant à l'aide d'une intention. C'est pour cela qu'il est principalement utilisé.
Sreekanth Karumanaghat
Pour ajouter à cela ... L'intention est asynchrone.
Sreekanth Karumanaghat
165

Qu'est-ce qu'une intention?

Une intention est essentiellement un message transmis entre des composants (tels que des activités , des services, des récepteurs de diffusion et des fournisseurs de contenu ). Ainsi, il est presque équivalent aux paramètres passés aux appels d'API. Les différences fondamentales entre les appels d'API et l'appel de composants via des intentions sont les suivantes:

  • Les appels d'API sont synchrones tandis que les appels basés sur l'intention sont asynchrones.
  • Les appels d'API sont des liaisons au moment de la compilation tandis que les appels basés sur des intentions sont des liaisons au moment de l'exécution.

Bien sûr, les intentions peuvent être conçues pour fonctionner exactement comme les appels d'API en utilisant ce que l'on appelle des intentions explicites, qui seront expliquées plus loin. Mais le plus souvent, les intentions implicites sont la voie à suivre et c'est ce qui est expliqué ici.

Un composant qui souhaite en invoquer un autre n'a qu'à exprimer son intention de faire un travail. Et tout autre composant qui existe et a prétendu qu'il peut faire un tel travail via des filtres d'intention , est invoqué par la plate-forme Android pour accomplir le travail. Cela signifie qu'aucun des composants n'est conscient de l'existence de l'autre mais peut toujours travailler ensemble pour donner le résultat souhaité à l'utilisateur final.

Cette connexion invisible entre les composants est obtenue grâce à la combinaison d'intentions, de filtres d'intention et de la plate-forme Android.

Cela conduit à d'énormes possibilités comme:

  • Mélangez et faites correspondre ou plutôt branchez et jouez des composants à l'exécution.
  • Remplacement des applications Android intégrées par des applications développées sur mesure.
  • Réutilisation au niveau des composants dans et entre les applications.
  • Une orientation service au niveau le plus granulaire, si je puis dire.

Voici des détails techniques supplémentaires sur les intentions de la documentation Android .

Une intention est une description abstraite d'une opération à effectuer. Il peut être utilisé avec startActivity pour lancer une activité, broadcastIntent pour l'envoyer à tous les composants BroadcastReceiver intéressés et startService (Intent) ou bindService (Intent, ServiceConnection, int) pour communiquer avec un service d'arrière-plan.

Une intention fournit une fonction pour effectuer une liaison d'exécution tardive entre le code dans différentes applications. Son utilisation la plus importante est dans le lancement d'activités, où il peut être considéré comme la colle entre les activités. Il s'agit essentiellement d'une structure de données passive contenant une description abstraite d'une action à effectuer. Les principaux éléments d'information d'une intention sont les suivants:

  • action Action générale à effectuer, telle que ACTION_VIEW, ACTION_EDIT, ACTION_MAIN, etc.
  • données Les données sur lesquelles opérer, comme un enregistrement de personne dans la base de données de contacts, exprimées en Uri.

Apprendre encore plus

mr.boyfox
la source
4
J'apprécie l'utilisation de concepts informatiques dans cette explication. Cela rend la discussion plus concrète et particulièrement utile aux lecteurs ayant un solide diplôme en informatique.
Donal Lafferty
49

Les intentions sont un moyen de dire à Android ce que vous voulez faire . En d'autres termes, vous décrivez votre intention. Les intentions peuvent être utilisées pour signaler au système Android qu'un certain événement s'est produit. D'autres composants d'Android peuvent s'inscrire à cet événement via un filtre d'intention.

Voici 2 types d'intentions

1. Intentions explicites

utilisé pour appeler un composant spécifique. Lorsque vous savez quel composant vous souhaitez lancer et que vous ne souhaitez pas laisser à l'utilisateur le contrôle gratuit du composant à utiliser. Par exemple, vous avez une application qui a 2 activités. Activité A et activité B. Vous souhaitez lancer l'activité B à partir de l'activité A. Dans ce cas, vous définissez une intention explicite ciblant l'activité B, puis l'utilisez pour l'appeler directement.

2. Intentions implicites

utilisé lorsque vous avez une idée de ce que vous voulez faire, mais que vous ne savez pas quel composant doit être lancé. Ou si vous souhaitez donner à l'utilisateur la possibilité de choisir entre une liste de composants à utiliser. Si ces intentions sont envoyées au système Android, il recherche tous les composants enregistrés pour l'action spécifique et le type de données. Si un seul composant est trouvé, Android démarre directement le composant. Par exemple, vous disposez d'une application qui utilise l'appareil photo pour prendre des photos. L'une des caractéristiques de votre application est que vous donnez à l'utilisateur la possibilité d'envoyer les photos qu'il a prises. Vous ne savez pas quel type d'application l'utilisateur peut envoyer des photos, et vous voulez également donner à l'utilisateur la possibilité de choisir l'application externe à utiliser s'il en a plusieurs. Dans ce cas, vous n'utiliseriez pas une intention explicite.

Une intention explicite est toujours livrée à sa cible, peu importe ce qu'elle contient; le filtre n'est pas consulté. Mais une intention implicite n'est délivrée à un composant que s'il peut passer à travers l'un des filtres du composant

Filtres d'intention

Si une intention est envoyée au système Android, elle déterminera les applications appropriées pour cette intention. Si plusieurs composants ont été enregistrés pour ce type d'intentions, Android offre à l'utilisateur le choix d'en ouvrir un.

Cette détermination est basée sur IntentFilters. Un IntentFilters spécifie les types d'intention auxquels une activité, un service ou un récepteur de diffusion peut répondre. Un filtre d'intention déclare les capacités d'un composant. Il spécifie ce qu'une activité ou un service peut faire et quels types de diffusions un récepteur peut gérer. Il permet au composant correspondant de recevoir des intentions du type déclaré. Les IntentFilters sont généralement définis via le fichier AndroidManifest.xml. Pour BroadcastReceiver, il est également possible de les définir dans le codage. Un IntentFilters est défini par sa catégorie, son action et ses filtres de données. Il peut également contenir des métadonnées supplémentaires.

Si un composant ne définit pas de filtre d'intention, il ne peut être appelé que par des intentions explicites.

Voici deux façons de définir un filtre

1. fichier manifeste

Si vous définissez le filtre d'intention dans le manifeste, votre application n'a pas besoin d'être en cours d'exécution pour réagir aux intentions définies dans son filtre. Android enregistre le filtre lorsque votre application est installée.

Récepteur 2.BroadCast

Si vous souhaitez que votre récepteur de diffusion reçoive l'intention uniquement lorsque votre application est en cours d'exécution. Ensuite, vous devez définir votre filtre d'intention pendant l'exécution (par programme). Gardez à l'esprit que cela ne fonctionne que pour les récepteurs de diffusion.

Varun Bhatia
la source
12

Après avoir écrit une seule activité, il est nécessaire de passer à une autre activité pour effectuer une autre tâche avec ou sans les informations de la première activité.

La plate-forme Android permet la transition au moyen de l'interface d'intention.

Les mots sont tirés d'ici: Utiliser Intent Demo et je vous suggère de parcourir cet exemple car ils ont également fourni un fichier de code. afin que vous puissiez l'utiliser et comprendre facilement la même chose.

Paresh Mayani
la source
Les intentions vont au-delà de la transition entre les activités. Il serait plus utile de donner un aperçu.
Vaddadi Kartick
@KartickVaddadi D'accord avec votre point. C'était ma réponse pour la seule utilisation d'Intent!
Paresh Mayani
Paresh, le lien blog.vimviv.com/android/intent-android ne fonctionne plus :(
user2060383
9

Intention Android

Android Intent vous permet de naviguer d'une activité Android à une autre. Avec des exemples, ce tutoriel parle également de différents types d'intentions Android.

Android Intent peut être défini comme un simple objet de message utilisé pour communiquer d'une activité à une autre.

Les intentions définissent l'intention d'une application. Ils sont également utilisés pour transférer des données entre les activités.

Une intention Android peut être utilisée pour effectuer les 3 tâches suivantes:

  1. Ouvrir une autre activité ou service à partir de l'activité en cours
  2. Passer des données entre les activités et les services
  3. Déléguez la responsabilité à une autre application. Par exemple, vous pouvez utiliser Intents pour ouvrir l'application de navigateur et afficher une URL.

L'intention peut être largement classée en 2 catégories. Il n'y a pas de mots-clés pour cette catégorie et juste une large classification de la façon dont les intentions Android sont utilisées.

Intention explicite d'Android

Intention Android explicite est l'intention dans laquelle vous définissez explicitement le composant qui doit être appelé par le système Android.

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

Intention Android implicite

Les intentions Android implicites sont l'intention où, au lieu de définir les composants exacts, vous définissez l'action que vous souhaitez effectuer. La décision de gérer cette action est laissée au système d'exploitation. Le système d'exploitation décide quel composant est préférable d'exécuter pour des intentions implicites. Voyons un exemple:

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

Pour plus d'informations, vous pouvez visiter ci-dessous

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

IntelliJ Amiya
la source
9

Selon leur documentation:

Une intention est un objet qui fournit une liaison d'exécution entre des composants distincts (tels que deux activités). L'intention représente «l'intention de faire quelque chose» d'une application. Vous pouvez utiliser des intentions pour une grande variété de tâches, mais le plus souvent, elles sont utilisées pour démarrer une autre activité.

Voici le lien avec l'exemple: http://developer.android.com/training/basics/firstapp/starting-activity.html#BuildIntent

Comme le décrit le document, pour démarrer une activité (vous devez également comprendre de quelle activité il s'agit), utilisez l'intention comme ci-dessous

/** 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
la source
8

Une intention est une description abstraite d'une opération à effectuer. Il peut être utilisé avec startActivity pour lancer une activité, broadcastIntent pour l'envoyer à tous les composants BroadcastReceiver intéressés et startService (Intent) ou bindService (Intent, ServiceConnection, int) pour communiquer avec un service d'arrière-plan.

Pour plus de détails, consultez ces liens:

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

il y a beaucoup plus d'articles disponibles.

Dinesh Sharma
la source
5

qu'est-ce que l'intention?

C'est une sorte de message ou d'information qui est transmise aux composants. Il est utilisé pour lancer une activité, afficher une page Web, envoyer des SMS, envoyer des e-mails, etc.

Il existe deux types d'intentions dans Android:

Intention implicite Intention
explicite

L' intention implicite est utilisée pour appeler les composants du système

Exemple

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

startActivity(i);

L' intention explicite est utilisée pour appeler la classe d'activité.

Exemple

Intention intention = newIntent (this, SecondActivity.class);

startActivity(intent);

vous pouvez lire plus

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

Mina Fawzy
la source
2

Une intention est une classe, qui lie les informations pour effectuer certaines actions.

exemple: transmission de données d'une activité à une autre activité lorsque l'utilisateur effectue de telles actions dans

activité présente.

madarkife
la source
1

D'une manière générale, nous pouvons définir l' intention comme

Lorsqu'une activité veut démarrer une autre activité, elle crée un objet appelé Intention qui spécifie quelle activité elle veut démarrer.

Kartik Goyal
la source
0

Une application Android peut contenir zéro ou plusieurs activités. Lorsque votre application comporte plusieurs activités, vous devez souvent naviguer de l'une à l'autre. Dans Android, vous naviguez entre les activités à travers ce que l'on appelle une intention. Vous pouvez transmettre certaines données à l'activité que vous souhaitez démarrer par intention, en utilisant putExtra ().

Shaon Hasan
la source
0

Depuis le lien papierDeep Dive into Android IPC/Binder Framework atAndroid Builders Summit 2013

L'intention est comprise dans quelques lignes petites mais efficaces

  1. Android prend en charge une forme simple d'IPC (communication inter-processus) via des intentions
  2. La messagerie d'intention est un cadre pour la communication asynchrone entre les composants Android (activité, service, fournisseurs de contenu, récepteur de diffusion)
  3. Ces composants peuvent s'exécuter dans la même application ou sur différentes applications (c'est-à-dire des processus)
  4. Permet à la fois des domaines de messagerie point à point et de publication d'abonnement
  5. L'intention elle-même représente un message contenant la description de l'opération à effectuer ainsi que les données à transmettre au (x) destinataire (s).

À partir de ce fil, une réponse simple de l'architecte androïde Dianne Hackborn le déclare commedata container .

Du point de vue de l'architecture Android :

Intent est un conteneur de données utilisé pour la communication inter-processus. Il est construit sur le Binderpoint de vue de l'architecture Android.

Zahan Safallwa
la source
0

Les intentions sont utilisées pour lancer une autre activité à partir d'une activité.Elles sont essentiellement utilisées à plusieurs fins telles que l'envoi de données à une autre activité à partir d'une activité et à des fins de déclenchement.

Ils sont essentiellement de deux types

  1. Intentions implicites.

  2. Intentions explicites.

En tant que débutant, je sais beaucoup de choses, je pense que cela donnera une idée de base sur les intentions d'Android

Soorya Prakash
la source
2
Veuillez lire ce lien pour savoir comment répondre aux questions.
Bonatti