Quels sont les intentions Android?

Les intentions sont un sujet fondamental pour les développeurs Android. Il est impossible de créer des applications Android sans entrer en contact avec des intentions. Dans ce tutoriel, je vais vous expliquer les intentions de A à Z.

Quelles sont les intentions?

Dans un match de football, les coéquipiers passent le ballon autour du terrain dans le but de l'envoyer dans le but de leur adversaire. Le ballon est passé du gardien de but de l'équipe à ses défenseurs. Ensuite, il parvient aux milieux de terrain et si tout se passe comme prévu, l'un des attaquants l'envoie dans le filet de l'adversaire. Cela suppose que le gardien de but de l'autre côté n'a pas été en mesure de le tenir à l'écart!

Sous Android, la possibilité d’envoyer des messages est rendue possible par la Intention objet. À l'aide d'intentions, les composants Android peuvent demander des fonctionnalités à d'autres composants Android. Lorsque vous ouvrez l'application Instagram sur votre téléphone et que vous l'utilisez pour prendre une photo, vous utilisez simplement une intention. Les intentions aident également à communiquer entre les parties d'une application; le passage d'un écran (activité) à un autre est rendu possible par des intentions.

Regardez les choses de cette façon: tous les composants (applications et écrans) du périphérique Android sont isolés. La seule façon de communiquer les uns avec les autres est d'intentions.

Commencer des activités avec des intentions

Comme mentionné précédemment, vous pouvez utiliser les intentions pour démarrer différents composants: activités, services et récepteurs de diffusion..

Pour démarrer une activité, vous utiliserez la méthode startActivity(intention).

Voici un extrait de code qui montre comment démarrer une autre activité à partir d'une intention..

 Intention numbersIntent = nouvelle Intention (MainActivity.this, NumbersActivity.class); startActivity (numbersIntent);

Tout d'abord, nous créons un nouveau Intention objet et passe le NumbersActivité classe. Ensuite, nous commençons une nouvelle activité en utilisant cette intention.

Types d'intentions

Android prend en charge deux types d'intentions: explicite et implicite. Lorsqu'une application définit son composant cible dans une intention, il s'agit d'une intention explicite. Lorsque l'application ne nomme pas un composant cible, il s'agit d'une intention implicite.

Exemple d'intention explicite

L'extrait de code ci-dessus est un exemple d'intention explicite. Regardez à nouveau.

 Intention numbersIntent = nouvelle Intention (MainActivity.this, NumbersActivity.class); startActivity (numbersIntent);

Ici, NumbersActivité est la composante cible de notre Activité principale. Cela signifie que NumbersActivité est le composant défini qui sera appelé par le système Android. Il est important de noter (comme dans l'exemple ci-dessus), que les intentions explicites sont généralement utilisées dans une application, car cela donne au développeur le plus de contrôle sur la classe qui sera lancée..

Exemple d'intention implicite

Voici une intention implicite:

 Intention Intention = nouvelle Intention (Intent.ACTION_VIEW, Uri.parse ("http://www.tutsplus.com")); startActivity (intention);

Si vous avez le code ci-dessus dans votre base de code, votre application peut démarrer un composant de navigateur pour une certaine URL via une intention. Mais comment le système Android identifie-t-il les composants pouvant réagir à une intention particulière??

Un composant peut être enregistré via un filtre d'intention pour une action spécifique. Les filtres d'intention peuvent être enregistrés pour les composants de manière statique dans AndroidManifest.xml. Voici un exemple qui enregistre un composant en tant que Web Viewer:

      

Utiliser des intentions dans une application

Écrivons du code pour voir comment ça marche. Dans cette section, vous allez créer une petite application pour essayer les deux styles d'intention. L'application aura un petit formulaire pour entrer un prénom et un nom. Quand le Soumettre Si vous cliquez sur le bouton, les deux valeurs entrées seront transmises à une autre activité. Il y aura aussi un bouton pour lancer le navigateur de votre choix. Le navigateur choisi s'ouvrira http://code.tutsplus.com.

Ouvrez Android Studio et générez votre Activité principale. Vous pouvez définir le nom du paquet sur com.tutsplus.code.android.droidintent.

Votre Activité principale commencera par quelques importations et la déclaration de classe:

package com.tutsplus.code.android.droidintent; importer android.content.Intent; importer android.net.Uri; importer android.support.v7.app.AppCompatActivity; importer android.os.Bundle; importer android.view.View; importer android.widget.Button; importer android.widget.EditText; Classe publique MainActivity étend AppCompatActivity 

Ensuite, vous remplacerez le onCreate () méthode pour initialiser l'activité avec n'importe quel état sauvegardé et la structure de l'activité (nous créerons cela plus tard).

 @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); // les gestionnaires de boutons vont ici

Ensuite, vous obtiendrez des références à chacun des boutons définis dans la présentation et joindrez un écouteur de clic à chacun d'entre eux..

 Bouton final submitButton = (Bouton) findViewById (R.id.submit_button); submitButton.setOnClickListener (new View.OnClickListener () @Override vide publique onClick (Afficher v) EditText firstName = (EditText) findViewById (R.id.first_name_text); EditText lastName = (EditText) findViewById (R.id.first_name_text); ; String firstNameString = firstName.getText (). ToString () String lastNameString = lastName.getText (). ToString (); Intent submitIntent = nouvel Intent (MainActivity.this, ShowActivity.class); submitIntent.putExtra ("firstNameString" firstNameString); submitIntent.putExtra ("lastNameString", lastNameString); startActivity (submitIntent);); 

Pour le Soumettre bouton, vous définissez un OnClickListener pour déclencher une action chaque fois que le bouton est cliqué. Lorsqu'un clic se produit, nous prenons le prénom et le nom de la vue et les envoyons à l'activité suivante: ShowActivity. Le composant cible est explicitement défini dans l'intention, ce qui en fait un exemple d'intention explicite.

 final Button browserButton = (Bouton) findViewById (R.id.browser_button); browserButton.setOnClickListener (new View.OnClickListener () @Override public void onClick (Afficher v) Intent Intent = new Intent (Intent.ACTION_VIEW, Uri.parse ("https://code.tutsplus.com")); startActivity (intention);  ); 

Pour le bouton du navigateur, le OnClickListener créera une nouvelle intention pour lancer toute application correspondant au filtre: un ACTION_VIEW qui devrait gérer une URL Web. En d'autres termes, il lance un navigateur Web. Si plusieurs applications de navigateur sont installées sur votre appareil, il vous sera demandé d'en sélectionner une pour exécuter l'action d'ouverture du site Web. Ceci est un exemple d'intention implicite.

Activité principale Disposition

La mise en page pour Activité principale sera très simple pour les besoins de ce tutoriel.

      

Ici vous avez deux Affichage et deux Éditer le texte indiquant le prénom et le nom, respectivement. Il y a aussi un bouton pour soumettre les noms et un autre pour lancer votre navigateur..

Créer le ShowActivity

Pour compléter notre application, nous devons créer une activité permettant de gérer l'intention explicite définie ci-dessus. Créez une nouvelle activité appelée ShowActivity. C'est l'activité où le résultat de la saisie du prénom et du nom de famille sera affiché. Voici à quoi cela devrait ressembler:

package com.tutsplus.code.android.droidintent; importer android.support.v7.app.AppCompatActivity; importer android.os.Bundle; importer android.widget.TextView; Classe publique ShowActivity étend AppCompatActivity @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_show); Extras de paquet = getIntent (). GetExtras (); String inputFirstName = extras.getString ("firstNameString"); String inputLastName = extras.getString ("lastNameString"); TextView showFirstName = (TextView) findViewById (R.id.show_first_name); TextView showLastName = (TextView) findViewById (R.id.show_last_name); showFirstName.setText (inputFirstName); showLastName.setText (inputLastName); 

Dans cette activité, vous commencez par obtenir les chaînes passées du Activité principale. Vous pouvez obtenir une référence à l’intention qui a déclenché le lancement de cette activité avec le getIntent () une fonction. Ensuite, vous pouvez accéder aux chaînes qui lui ont été transmises en utilisant getExtras (). getString (). Enfin, après avoir extrait les occurrences TextView de la mise en page, vous affichez les valeurs obtenues.. 

ShowActivity Layout

La mise en page de cette activité est simple:

      

Test de l'application

Maintenant, vous pouvez créer votre application et l'essayer sur votre appareil Android!

Passing Data Using Bundles

Vous pouvez également utiliser Bundles lorsque vous transmettez des données via des intentions..

le Paquet class vous permet de stocker des données complexes et prend en charge des types de données tels que des chaînes, des caractères, des booléens, des entiers, etc. Voici un exemple montrant comment une partie de MainActivity.java regarderais si tu utilisais Paquet.

// Création d'un objet Bundle Bundle b = new Bundle (); // Stockage des données dans le paquet b.putString ("firstNameString", firstNameString); b.putString ("lastNameString", lastNameString); // Création de l'objet Intention Intent submitIntent = new Intent (MainActivity.this, ShowActivity.class); // Stockage de l'objet bundle dans l'intention submitIntent.putExtra (b); startActivity (submitIntent);

Conclusion

Dans ce tutoriel, nous avons eu une brève introduction à l’utilisation d’intentions pour créer des activités dans Android. Nous avons examiné la différence entre les intentions explicites et implicites et codé un exemple simple utilisant chaque type. 

Vous pouvez en savoir plus sur les intentions dans la documentation Android. Comprendre leur fonctionnement est très important. Au fur et à mesure que vous construisez plus d'applications, vous rencontrerez de nombreux types d'intentions et de façons de les utiliser..

Et en attendant, découvrez quelques-uns de nos autres articles sur le développement d'applications Android.!