1
Intent in Android
Android utilise Intent pour communiquer entre les composants d'une application et
également d'une application à une autre.
L'intention sont les objets qui sont utilisés dans Android pour transmettre les informations
entre les activités d'une application et également d'une application à une autre. L'intention
est utilisée pour communiquer entre les composants de l'application et fournit également la
connectivité entre deux applications.
Par exemple : l'intention vous permet de rediriger votre activité vers une autre activité en
cas de survenance d'un événement. En appelant startActivity(), vous pouvez effectuer cette
tâche.
Intent intent = new Intent(getApplicationContext(), [Link]);
startActivity(intent);
Dans l'exemple ci-dessus, l'activité de premier plan est redirigée vers une autre
activité, à savoir [Link]. getApplicationContext() renvoie le contexte de
votre activité de premier plan.
Types des Intents:
Les intentions sont de deux types : l'intention explicite et l'intention implicite
2
Intention explicite :
Les intentions explicites sont utilisées pour connecter l'application en interne.
Dans Explicit, nous utilisons le nom du composant qui sera affecté par l'intention. Par
exemple : si nous connaissons le nom de la classe, nous pouvons naviguer dans l'application
d'une activité à une autre en utilisant l'intention. De la même manière, nous pouvons
démarrer un service pour télécharger un fichier en arrière-plan.
L'intention explicite fonctionne en interne au sein d'une application pour effectuer la
navigation et le transfert de données. L'extrait de code ci-dessous vous aidera à comprendre
le concept d'intentions explicites.
Intent intent = new Intent(getApplicationContext(), [Link]);
startActivity(intent);
Intention implicite :
Dans les intentions implicites, nous devons spécifier le nom du composant. Nous spécifions
simplement l'action qui doit être effectuée et cette action est en outre gérée par le
composant d'une autre application.
L'exemple de base d'intention implicite est d'ouvrir n'importe quelle page Web
Prenons un exemple pour comprendre plus clairement les intentions implicites. Nous devons
ouvrir un site Web en utilisant l'intention dans votre application. Voir l'extrait de code ci-
dessous.
Intent intentObj = new Intent(Intent.ACTION_VIEW);
[Link]([Link]("[Link]
startActivity(intentObj);
Étape 1 : Concevons l'interface utilisateur de Activity_main.xml :
• Concevez d'abord la vue texte affichant les détails de base de l'application.
• Deuxièmement, concevez les deux boutons Exemple d'intention explicite et Exemple
d'intention implicite
3
Vous trouverez ci-dessous le code complet de Activity_main.xml
<RelativeLayout xmlns:android="[Link]
xmlns:tools="[Link]
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainAc
tivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="If you click on Explicit example we will navigate to second a
ctivity within App and if you click on Implicit example AbhiAndroid Homepage will o
pen in Browser"
android:id="@+id/textView2"
android:clickable="false"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:layout_marginTop="42dp"
android:background="#3e7d02"
android:textColor="#ffffff" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Explicit Intent Example"
android:id="@+id/explicit_Intent"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="147dp" />
<Button
android:layout_width="wrap_content"
4
android:layout_height="wrap_content"
android:text="Implicit Intent Example"
android:id="@+id/implicit_Intent"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
Étape 2 : Concevoir l'interface utilisateur de la deuxième activité Activity_second.xml
Concevons maintenant l'interface utilisateur d'une autre activité dans laquelle l'utilisateur
naviguera après avoir cliqué sur le bouton Exemple explicite. Accédez au dossier de mise en
page, créez une nouvelle activité et nommez-la Activity_second.xml.
• Dans cette activité, nous utiliserons simplement TextView pour indiquer à l'utilisateur qu'il
en est maintenant à sa deuxième activité.
Vous trouverez ci-dessous le code complet de Activity_second.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="[Link]
xmlns:tools="[Link] android:layout_width="match_par
ent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:background="#CCEEAA"
tools:context="[Link]">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="This is Second Activity"
android:id="@+id/textView"
android:layout_centerVertical="true"
5
android:layout_centerHorizontal="true" />
</RelativeLayout>
Étape 3 : implémenter l'événement onClick pour les boutons implicites et explicites dans
[Link] allons maintenant utiliser la méthode setOnClickListener() pour
implémenter l'événement OnClick sur le bouton. Le bouton implicite ouvrira la page
d’accueil d’[Link] dans le navigateur et le bouton explicite sera déplacé vers
[Link].
Vous trouverez ci-dessous le code complet de [Link]
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class MainActivity extends AppCompatActivity {
Button explicit_btn, implicit_btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);
setContentView([Link].activity_main);
explicit_btn = (Button)findViewById([Link].explicit_Intent);
implicit_btn = (Button) findViewById([Link].implicit_Intent);
//implement Onclick event for Explicit Intent
explicit_btn.setOnClickListener(new [Link]() {
6
@Override
public void onClick(View v) {
Intent intent = new Intent(getBaseContext(), [Link]
);
startActivity(intent);
}
});
//implement onClick event for Implicit Intent
implicit_btn.setOnClickListener(new [Link]() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW);
[Link]([Link]("[Link]
startActivity(intent);
}
});
}
}
Étape 4 : Créer un nouveau nom de classe JAVA SecondActivity.
Nous devons maintenant créer un autre [Link] qui ouvrira simplement la mise
en page de Activity_second.xml . Nous utiliserons également Toast pour afficher un message
indiquant qu'il est en deuxième activité.
Vous trouverez ci-dessous le code complet de [Link] :
package [Link];
import [Link];
7
import [Link];
import [Link];
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);
setContentView([Link].activity_second);
[Link](getApplicationContext(), "We are moved to second Activity",
Toast.LENGTH_LONG).show();
}
}
Étape 5 : Fichier manifeste :
Assurez-vous que le fichier Manifest contient à la fois MainActivity et SecondActivity. Ici
aussi, MainActivity est notre activité principale qui sera lancée en premier. Assurez-vous
donc que le filtre d'intention est correctement ajouté juste en dessous de MainActivity.
Ci-dessous le code du fichier manifeste :
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="[Link]
package="[Link]" >
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme" >
<activity android:name=".MainActivity" >
<intent-filter>
<action android:name="[Link]" />
<category android:name="[Link]" />
</intent-filter>
8
</activity>
<activity android:name=".SecondActivity" >
</activity>
</application>
</manifest>