Le Tutoriel de Android Intents

View more Tutorials:

1- Qu'est ce qu'Intent?

Intent (Intention) sont des messages asynchrones qui permettent aux composants d'application de demander des fonctionnalités à partir d'autres composants Android. Des Intents vous permettent d'interagir avec les composants des mêmes applications ainsi qu'avec les composants apportés par d'autres applications. Par exemple, une activité peut démarrer une activité externe pour prendre une photo.
intent est un objet de la classe  android.content.Intent. Votre code peut envoyer Intent au système Android pour définir les composants que vous ciblez.

Par exemple, à travers la méthode  startActivity(), vous pouvez définir un  Intent qui devrait être utilisée pour lancer une Activity. Dans Activity cible, via la méthode startActivity(), vous pouvez déterminer l'intention de l'expéditeur de lancer (start) cette  Activity.

Un  Intent peut contenir des données via un Bundle. Ces données peuvent être utilisées par le composant de réception.
 
Intent peut être utilisé pour:
  1. Démarrer une activité
  2. Démarrer une sous activité
  3. Démarrer un service
\Après avoir appris Intent, vous pouvez trouver plus de détails sur l'  Android Service à:

2- Les types d'Intent

Android prend en charge les Intents explicites (explicits) et des Intents implicites (implicit).

Une application peut définir le composant cible directement dans l' Intent (intention explicite) ou demander au système Android d'évaluer les composants enregistrés en fonction des données d' Intent (intentions implicites).

3- Intent explicite

Intent explicit (Explicit intents): Sont des intentions (intent) qui spécifient explicitement le nom du composant cible pour gérer l'intention; dans ceux- ci, le nom de composant du champ facultatif (ci-dessus) est défini une valeur précise à l'aide des méthodes  setComponent() ou  setClass().
Par exemple, créez Intent:
// Create the Intent with the target of Greeting Activity.
// Intent(FirstActivity, SecondActivity.class)
Intent intent = new Intent(this,GreetingActivity.class);

// The data attached
intent.putExtra("firstName",firstName);
intent.putExtra("lastName", lastName);

// Start Activity (GreetingActivity)
// (No need feedback from the activity is called)
this.startActivity(intent);


// Start Activity and will have a feedback from the activity is called.
this.startActivityForResult(intent, MY_REQUEST_CODE);
Ou:
// Way 1.
Intent mIntent = new Intent(this, GreetingActivity.class);
Bundle extras = mIntent.getExtras();
extras.putString("firstName", "<firstName>");
extras.putString("látName", "<lastName>");

// Way 2.
Intent mIntent2 = new Intent(this, GreetingActivity.class);
Bundle mBundle = new Bundle();
mBundle.putString("firstName", "<firstName>");
mBundle.putString("látName", "<lastName>");
mIntent2.putExtras(mBundle);

// Way 3:
// Using putExtra()
Intent mIntent3 = new Intent(this, GreetingActivity.class);
mIntent3.putExtra("firstName", "<firstName>");
mIntent3.putExtra("látName", "<lastName>");
Dans la cible  Activity:
Intent intent = this.getIntent();

String firstName= intent.getStringExtra("firstName");
String lastName = intent.getStringExtra("lastName");

// Or
Bundle extras = this.getIntent().getExtras();

String firstName1 = extras.getString("firstName");
String lastName2  = extras.getString("lastName");
OK, vous pouvez voir l'exemple simple suivant:

4- Le filtre Intent (Intent Filter)

Lorsque vous créez une nouvelle  Activity ou un  Service, vous devez les déclarer avec  AndroidManifest.xml. Normalement, lorsque vous les créez avec l' aide d'assistant (wizard) dans Android Studio, le code d'enregistrement est automatiquement créé dans AndroidManifest.xml. Par exemple:
Vous pouvez constater que dans la déclaration Activity sur  AndroidManifest.xml peut avoir le tag  <intent-filter>, cette étiquette spécifie le type d'intention qui lui est envoyé (Activity) qu'elle peut accepter.
Lorsque vous créez une intention implicite (Implicit Intent), le système Android trouve le composant approprié pour commencer en comparant le contenu de l'intention aux filtres d'intention (Intent) déclarés dans le fichier manifeste d'autres applications sur le périphérique. Si l' Intent correspond à un filtre d'intention, le système démarre ce composant et lui délivre l'objet Intent.
Exemple:
** AndroidManifest.xml **
.....

<activity android:name=".HelloWorld"
   android:label="@string/app_name">
   <intent-filter>
       <action android:name="android.intent.action.VIEW"/>
       <category android:name="android.intent.category.DEFAULT"/>
       <category android:name="android.intent.category.BROWSABLE"/>
       <data android:scheme="http" android:host="o7planning.org"/>
   </intent-filter>
</activity>

...
Par exemple, créer une Intent implicite peut appeler l'activité ci-dessus (elle correspond aux filtres d' Intent).
// An implicit intent, requested to view a URL

Intent intent = new Intent (Intent.ACTION_VIEW, Uri.parse("//o7planning.org"));
startActivity(intent);

5- Intent implicite

Intent Implicite (Implicit Intents): Ceux-ci ne précisent pas de composant cible, mais incluent suffisamment d'informations pour le système afin de déterminer lequel des composants disponibles est le mieux pour exécuter cette intention. Considérez une application qui répertorie les restaurants disponibles près de chez vous. Lorsque vous cliquez sur une option de restaurant en particulier, l'application doit demander aux une autre application d'afficher l'itinéraire vers ce restaurant. Pour ce faire, il pourrait soit envoyer une intention explicite directement à la application Google Maps, soit envoyer une intention implicite, qui serait livrée à toute application qui fournit la fonctionnalité de la carte (map) (par exemple, Yahoo Maps).
Some examples with implicit Intent:
Un exemple avec Intent implicite, lorsque vous cliquez sur un bouton, l'application a envoyé au système Android une demande de prise de photo par Camera et d'enregistrer l'image dans un fichier.

View more Tutorials: