Android - Intentions et filtres

Un Android Intentest une description abstraite d'une opération à effectuer. Il peut être utilisé avecstartActivity 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.

The intent itself, an Intent object, is a passive data structure holding an abstract description of an operation to be performed.

Par exemple, supposons que vous ayez une activité qui doit lancer un client de messagerie et envoyer un e-mail à l'aide de votre appareil Android. À cette fin, votre activité enverrait un ACTION_SEND avecchooser, au résolveur d'intention Android. Le sélecteur spécifié donne l'interface appropriée pour que l'utilisateur choisisse comment envoyer vos données de courrier électronique.

Intent email = new Intent(Intent.ACTION_SEND, Uri.parse("mailto:"));
email.putExtra(Intent.EXTRA_EMAIL, recipients);
email.putExtra(Intent.EXTRA_SUBJECT, subject.getText().toString());
email.putExtra(Intent.EXTRA_TEXT, body.getText().toString());
startActivity(Intent.createChooser(email, "Choose an email client from..."));

La syntaxe ci-dessus appelle la méthode startActivity pour démarrer une activité de courrier électronique et le résultat doit être comme indiqué ci-dessous -

Par exemple, supposons que vous ayez une activité qui doit ouvrir une URL dans un navigateur Web sur votre appareil Android. À cette fin, votre activité enverra une intention ACTION_WEB_SEARCH au résolveur d'intention Android pour ouvrir l'URL donnée dans le navigateur Web. Le résolveur d'intention analyse une liste d'activités et choisit celle qui correspond le mieux à votre intention, dans ce cas, l'activité du navigateur Web. Le résolveur d'intention transmet ensuite votre page Web au navigateur Web et démarre l'activité du navigateur Web.

String q = "tutorialspoint";
Intent intent = new Intent(Intent.ACTION_WEB_SEARCH );
intent.putExtra(SearchManager.QUERY, q);
startActivity(intent);

L'exemple ci-dessus recherchera comme tutorialspoint sur le moteur de recherche Android et il donne le résultat de tutorialspoint dans votre activité

Il existe des mécanismes distincts pour fournir des intentions à chaque type de composant - activités, services et récepteurs de diffusion.

Sr. Non Méthode et description
1

Context.startActivity()

L'objet Intent est passé à cette méthode pour lancer une nouvelle activité ou obtenir une activité existante pour faire quelque chose de nouveau.

2

Context.startService()

L'objet Intent est passé à cette méthode pour lancer un service ou fournir de nouvelles instructions à un service en cours.

3

Context.sendBroadcast()

L'objet Intent est passé à cette méthode pour remettre le message à tous les destinataires de diffusion intéressés.

Objets d'intention

Un objet Intent est un ensemble d'informations qui sont utilisées par le composant qui reçoit l'intention ainsi que des informations utilisées par le système Android.

Un objet Intent peut contenir les composants suivants en fonction de ce qu'il communique ou va effectuer -

action

Il s'agit d'une partie obligatoire de l'objet Intent et il s'agit d'une chaîne nommant l'action à effectuer - ou, dans le cas des intentions de diffusion, l'action qui a eu lieu et qui est signalée. L'action détermine en grande partie la structure du reste de l'objet d'intention. La classe Intent définit un certain nombre de constantes d'action correspondant à différents intents. Voici une liste des actions standard Android Intent

L'action dans un objet Intent peut être définie par la méthode setAction () et lue par getAction ().

Les données

Ajoute une spécification de données à un filtre d'intention. La spécification peut être simplement un type de données (l'attribut mimeType), juste un URI, ou à la fois un type de données et un URI. Un URI est spécifié par des attributs séparés pour chacune de ses parties -

Ces attributs qui spécifient le format de l'URL sont facultatifs, mais également interdépendants -

  • Si aucun schéma n'est spécifié pour le filtre d'intention, tous les autres attributs d'URI sont ignorés.
  • Si aucun hôte n'est spécifié pour le filtre, l'attribut de port et tous les attributs de chemin sont ignorés.

La méthode setData () spécifie les données uniquement sous forme d'URI, setType () les spécifie uniquement comme type MIME et setDataAndType () les spécifie à la fois comme URI et comme type MIME. L'URI est lu par getData () et le type par getType ().

Quelques exemples de paires action / données sont -

N ° Sr. Action / paire de données et description
1

ACTION_VIEW content://contacts/people/1

Afficher des informations sur la personne dont l'identifiant est "1".

2

ACTION_DIAL content://contacts/people/1

Affichez le numéroteur téléphonique avec la personne remplie.

3

ACTION_VIEW tel:123

Affichez le numéroteur téléphonique avec le numéro indiqué.

4

ACTION_DIAL tel:123

Affichez le numéroteur téléphonique avec le numéro indiqué.

5

ACTION_EDIT content://contacts/people/1

Modifiez les informations sur la personne dont l'identifiant est "1".

6

ACTION_VIEW content://contacts/people/

Afficher une liste de personnes que l'utilisateur peut parcourir.

sept

ACTION_SET_WALLPAPER

Afficher les paramètres pour choisir le fond d'écran

8

ACTION_SYNC

Ça va être synchrone les données, la valeur constante est android.intent.action.SYNC

9

ACTION_SYSTEM_TUTORIAL

Il lancera le didacticiel défini par la plate-forme (didacticiel par défaut ou didacticiel de démarrage)

dix

ACTION_TIMEZONE_CHANGED

Il indique quand le fuseau horaire a changé

11

ACTION_UNINSTALL_PACKAGE

Il est utilisé pour exécuter le programme de désinstallation par défaut

Catégorie

La catégorie est une partie facultative de l'objet Intent et c'est une chaîne contenant des informations supplémentaires sur le type de composant qui doit gérer l'intention. La méthode addCategory () place une catégorie dans un objet Intent, removeCategory () supprime une catégorie précédemment ajoutée et getCategories () obtient l'ensemble de toutes les catégories actuellement dans l'objet. Voici une liste des catégories standard d'intention Android .

Vous pouvez consulter les détails sur les filtres d'intention dans la section ci-dessous pour comprendre comment nous utilisons les catégories pour choisir l'activité appropriée correspondant à une intention.

Suppléments

Ce sera dans des paires clé-valeur pour des informations supplémentaires qui doivent être fournies au composant gérant l'intention. Les extras peuvent être définis et lus à l'aide des méthodes putExtras () et getExtras () respectivement. Voici une liste de données supplémentaires Android Intent Standard

Drapeaux

Ces indicateurs font partie facultative de l'objet Intent et indiquent au système Android comment lancer une activité et comment la traiter après son lancement, etc.

Sr. Non Drapeaux et description
1

FLAG_ACTIVITY_CLEAR_TASK

S'il est défini dans une intention passée à Context.startActivity (), cet indicateur entraînera l'effacement de toute tâche existante qui serait associée à l'activité avant le démarrage de l'activité. Autrement dit, l'activité devient la nouvelle racine d'une tâche par ailleurs vide et toutes les anciennes activités sont terminées. Cela ne peut être utilisé qu'avec FLAG_ACTIVITY_NEW_TASK.

2

FLAG_ACTIVITY_CLEAR_TOP

S'il est défini et que l'activité en cours de lancement est déjà en cours d'exécution dans la tâche actuelle, alors au lieu de lancer une nouvelle instance de cette activité, toutes les autres activités en plus seront fermées et cette intention sera transmise au (maintenant le haut) ancienne activité comme nouvelle intention.

3

FLAG_ACTIVITY_NEW_TASK

Cet indicateur est généralement utilisé par les activités qui veulent présenter un comportement de style "lanceur": ils donnent à l'utilisateur une liste de choses distinctes qui peuvent être faites, qui sinon s'exécutent complètement indépendamment de l'activité qui les lance.

Nom du composant

Ce champ facultatif est un androïde ComponentNameobjet représentant la classe Activity, Service ou BroadcastReceiver. S'il est défini, l'objet Intent est livré à une instance de la classe désignée, sinon Android utilise d'autres informations dans l'objet Intent pour localiser une cible appropriée.

Le nom du composant est défini par setComponent (), setClass () ou setClassName () et lu par getComponent ().

Types d'intentions

Il existe deux types d'intentions pris en charge par Android

Intentions explicites

L'intention explicite va être connectée au monde interne de l'application, supposons que si vous souhaitez connecter une activité à une autre activité, nous pouvons faire cette citation par intention explicite, l'image ci-dessous connecte la première activité à la deuxième activité en cliquant sur le bouton.

Ces intentions désignent le composant cible par son nom et sont généralement utilisées pour les messages internes à l'application, comme une activité qui démarre un service subordonné ou lance une activité sœur. Par exemple -

// Explicit Intent by specifying its class name
Intent i = new Intent(FirstActivity.this, SecondActivity.class);

// Starts TargetActivity
startActivity(i);

Intentions implicites

Ces intentions ne nomment pas de cible et le champ du nom du composant est laissé vide. Les intentions implicites sont souvent utilisées pour activer des composants dans d'autres applications. Par exemple -

Intent read1=new Intent();
read1.setAction(android.content.Intent.ACTION_VIEW);
read1.setData(ContactsContract.Contacts.CONTENT_URI);
startActivity(read1);

Le code ci-dessus donnera le résultat comme indiqué ci-dessous

Le composant cible qui reçoit l'intention peut utiliser le getExtras()méthode pour obtenir les données supplémentaires envoyées par le composant source. Par exemple -

// Get bundle object at appropriate place in your code
Bundle extras = getIntent().getExtras();

// Extract data using passed keys
String value1 = extras.getString("Key1");
String value2 = extras.getString("Key2");

Exemple

L'exemple suivant montre la fonctionnalité d'une intention Android pour lancer diverses applications intégrées Android.

Étape La description
1 Vous utiliserez l'IDE de studio Android pour créer une application Android et la nommerez My Application sous un package com.example.saira_000.myapplication .
2 Modifiez le fichier src / main / java / MainActivity.java et ajoutez le code pour définir deux écouteurs correspondant à deux boutons ie. Démarrez le navigateur et démarrez le téléphone.
3 Modifiez le fichier XML de mise en page res / layout / activity_main.xml pour ajouter trois boutons dans la mise en page linéaire.
4 Exécutez l'application pour lancer l'émulateur Android et vérifier le résultat des modifications effectuées dans l'application.

Voici le contenu du fichier d'activité principal modifié src/com.example.My Application/MainActivity.java.

package com.example.saira_000.myapplication;

import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
   Button b1,b2;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      b1=(Button)findViewById(R.id.button);
      b1.setOnClickListener(new View.OnClickListener() {

         @Override
         public void onClick(View v) {
            Intent i = new Intent(android.content.Intent.ACTION_VIEW, 
               Uri.parse("http://www.example.com"));
            startActivity(i);
         }
      });

      b2=(Button)findViewById(R.id.button2);
      b2.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            Intent i = new Intent(android.content.Intent.ACTION_VIEW,
               Uri.parse("tel:9510300000"));
            startActivity(i);
         }
      });
   }
}

Voici le contenu de res/layout/activity_main.xml fichier -

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools" 
   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=".MainActivity">
   
   <TextView
      android:id="@+id/textView1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Intent Example"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true"
      android:textSize="30dp" />
      
   <TextView
      android:id="@+id/textView2"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials point"
      android:textColor="#ff87ff09"
      android:textSize="30dp"
      android:layout_below="@+id/textView1"
      android:layout_centerHorizontal="true" />
      
   <ImageButton
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageButton"
      android:src="@drawable/abc"
      android:layout_below="@+id/textView2"
      android:layout_centerHorizontal="true" />
      
   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/editText"
      android:layout_below="@+id/imageButton"
      android:layout_alignRight="@+id/imageButton"
      android:layout_alignEnd="@+id/imageButton" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Start Browser"
      android:id="@+id/button"
      android:layout_alignTop="@+id/editText"
      android:layout_alignRight="@+id/textView1"
      android:layout_alignEnd="@+id/textView1"
      android:layout_alignLeft="@+id/imageButton"
      android:layout_alignStart="@+id/imageButton" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Start Phone"
      android:id="@+id/button2"
      android:layout_below="@+id/button"
      android:layout_alignLeft="@+id/button"
      android:layout_alignStart="@+id/button"
      android:layout_alignRight="@+id/textView2"
      android:layout_alignEnd="@+id/textView2" />
</RelativeLayout>

Voici le contenu de res/values/strings.xml pour définir deux nouvelles constantes -

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string name="app_name">My Applicaiton</string>
</resources>

Voici le contenu par défaut de AndroidManifest.xml -

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.saira_000.myapplication">

   <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="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
      </activity>
   </application>
</manifest>

Essayons d'exécuter votre My Applicationapplication. Je suppose que vous avez créé votreAVDlors de la configuration de l'environnement. Pour exécuter l'application à partir d'Android Studio, ouvrez l'un des fichiers d'activité de votre projet et cliquez sur l' icône Exécuter dans la barre d'outils.Android Studio installe l'application sur votre AVD et la démarre et si tout va bien avec votre configuration et votre application, elle s'affichera à la suite de l'émulateur fenêtre -

Cliquez maintenant sur Start Browser bouton, qui lancera un navigateur configuré et affichera http://www.example.com comme indiqué ci-dessous -

De la même manière, vous pouvez lancer l'interface du téléphone en utilisant le bouton Démarrer le téléphone, qui vous permettra de composer un numéro de téléphone déjà donné.

Filtres d'intention

Vous avez vu comment une intention a été utilisée pour appeler une autre activité. Android OS utilise des filtres pour identifier l'ensemble des récepteurs d'activités, de services et de diffusion qui peuvent gérer l'intention à l'aide d'un ensemble d'actions, de catégories et de schémas de données spécifiques associés à une intention. Vous utiliserez<intent-filter> dans le fichier manifeste pour répertorier les actions, les catégories et les types de données associés à toute activité, service ou récepteur de diffusion.

Voici un exemple d'une partie de AndroidManifest.xml fichier pour spécifier une activité com.example.My Application.CustomActivity qui peut être invoqué par l'une des deux actions mentionnées, une catégorie et une donnée -

<activity android:name=".CustomActivity"
   android:label="@string/app_name">
   
   <intent-filter>
      <action android:name="android.intent.action.VIEW" />
      <action android:name="com.example.My Application.LAUNCH" />
      <category android:name="android.intent.category.DEFAULT" />
      <data android:scheme="http" />
   </intent-filter>
   
</activity>

Une fois cette activité définie avec les filtres mentionnés ci-dessus, d'autres activités pourront appeler cette activité en utilisant soit le android.intent.action.VIEW, ou en utilisant le com.example.My Application.LAUNCH action à condition que leur catégorie soit android.intent.category.DEFAULT.

le <data> element spécifie le type de données attendu par l'activité à appeler et pour l'exemple ci-dessus, notre activité personnalisée s'attend à ce que les données commencent par "http: //"

Il peut y avoir une situation dans laquelle une intention peut passer à travers les filtres de plus d'une activité ou d'un service, l'utilisateur peut se voir demander quel composant activer. Une exception est déclenchée si aucune cible ne peut être trouvée.

Il y a des vérifications Android de test suivantes avant d'appeler une activité -

  • Un filtre <intent-filter> peut lister plus d'une action comme indiqué ci-dessus mais cette liste ne peut pas être vide; un filtre doit contenir au moins un élément <action>, sinon il bloquera toutes les intentions. Si plusieurs actions sont mentionnées, Android essaie de faire correspondre l'une des actions mentionnées avant d'appeler l'activité.

  • Un filtre <intent-filter> peut lister zéro, une ou plusieurs catégories. si aucune catégorie n'est mentionnée, Android réussit toujours ce test, mais si plusieurs catégories sont mentionnées, alors pour qu'une intention de réussir le test de catégorie, chaque catégorie de l'objet Intent doit correspondre à une catégorie du filtre.

  • Chaque élément <data> peut spécifier un URI et un type de données (type de média MIME). Il existe des attributs distincts commescheme, host, port, et pathpour chaque partie de l'URI. Un objet Intent qui contient à la fois un URI et un type de données transmet la partie type de données du test uniquement si son type correspond à un type répertorié dans le filtre.

Exemple

L'exemple suivant est une modification de l'exemple ci-dessus. Nous verrons ici comment Android résout le conflit si un intent appelle deux activités définies dans, ensuite comment invoquer une activité personnalisée à l'aide d'un filtre et le troisième est un cas d'exception si Android ne classe pas l'activité appropriée définie pour un intent.

Étape La description
1 Vous utiliserez Android Studio pour créer une application Android et la nommerez My Application sous un package com.example.tutorialspoint7.myapplication; .
2 Modifiez le fichier src / Main / Java / MainActivity.java et ajoutez le code pour définir trois écouteurs correspondant à trois boutons définis dans le fichier de mise en page.
3 Ajoutez un nouveau fichier src / Main / Java / CustomActivity.java pour avoir une activité personnalisée qui sera appelée par des intentions différentes.
4 Modifiez le fichier XML de mise en page res / layout / activity_main.xml pour ajouter trois boutons dans la mise en page linéaire.
5 Ajoutez un fichier XML de mise en page res / layout / custom_view.xml pour ajouter un simple <TextView> pour afficher les données transmises via l'intention.
6 Modifiez AndroidManifest.xml pour ajouter < intent -filter> afin de définir des règles pour votre intention d'appeler une activité personnalisée.
sept Exécutez l'application pour lancer l'émulateur Android et vérifier le résultat des modifications effectuées dans l'application.

Voici le contenu du fichier d'activité principal modifié src/MainActivity.java.

package com.example.tutorialspoint7.myapplication;

import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
   Button b1,b2,b3;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      b1=(Button)findViewById(R.id.button);
      b1.setOnClickListener(new View.OnClickListener() {
      
         @Override
         public void onClick(View v) {
            Intent i = new Intent(android.content.Intent.ACTION_VIEW,
               Uri.parse("http://www.example.com"));
            startActivity(i);
         }
      });

      b2 = (Button)findViewById(R.id.button2);
      b2.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            Intent i = new Intent("com.example.
               tutorialspoint7.myapplication.
                  LAUNCH",Uri.parse("http://www.example.com"));
            startActivity(i);
         }
      });

      b3 = (Button)findViewById(R.id.button3);
      b3.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            Intent i = new Intent("com.example.
               My Application.LAUNCH",
                  Uri.parse("https://www.example.com"));
            startActivity(i);
         }
      });
   }
}

Voici le contenu du fichier d'activité principal modifié src/com.example.My Application/CustomActivity.java.

package com.example.tutorialspoint7.myapplication;

import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.widget.TextView;

/**
 * Created by TutorialsPoint7 on 8/23/2016.
 */
public class CustomActivity extends Activity {
   @Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.custom_view);
      TextView label = (TextView) findViewById(R.id.show_data);
      Uri url = getIntent().getData();
      label.setText(url.toString());
   }
}

Voici le contenu de res/layout/activity_main.xml fichier -

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
   xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:paddingBottom="@dimen/activity_vertical_margin"
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   tools:context="com.example.tutorialspoint7.myapplication.MainActivity">

   <TextView
      android:id="@+id/textView1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Intent Example"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true"
      android:textSize="30dp" />

   <TextView
      android:id="@+id/textView2"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials point"
      android:textColor="#ff87ff09"
      android:textSize="30dp"
      android:layout_below="@+id/textView1"
      android:layout_centerHorizontal="true" />

   <ImageButton
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageButton"
      android:src="@drawable/abc"
      android:layout_below="@+id/textView2"
      android:layout_centerHorizontal="true" />

   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/editText"
      android:layout_below="@+id/imageButton"
      android:layout_alignRight="@+id/imageButton"
      android:layout_alignEnd="@+id/imageButton" />

   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Start Browser"
      android:id="@+id/button"
      android:layout_alignTop="@+id/editText"
      android:layout_alignLeft="@+id/imageButton"
      android:layout_alignStart="@+id/imageButton"
      android:layout_alignEnd="@+id/imageButton" />

   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Start browsing with launch action"
      android:id="@+id/button2"
      android:layout_below="@+id/button"
      android:layout_alignLeft="@+id/button"
      android:layout_alignStart="@+id/button"
      android:layout_alignEnd="@+id/button" />
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Exceptional condition"
      android:id="@+id/button3"
      android:layout_below="@+id/button2"
      android:layout_alignLeft="@+id/button2"
      android:layout_alignStart="@+id/button2"
      android:layout_toStartOf="@+id/editText"
      android:layout_alignParentEnd="true" />
</RelativeLayout>

Voici le contenu de res/layout/custom_view.xml fichier -

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical" android:layout_width="match_parent"
   android:layout_height="match_parent">
   <TextView android:id="@+id/show_data"
      android:layout_width="fill_parent"
      android:layout_height="400dp"/>
</LinearLayout>

Voici le contenu de res/values/strings.xml pour définir deux nouvelles constantes -

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string name="app_name">My Application</string>
</resources>

Voici le contenu par défaut de AndroidManifest.xml -

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.tutorialspoint7.myapplication">

   <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 = "android.intent.action.MAIN" />
            <category android:name = "android.intent.category.LAUNCHER" />
         </intent-filter>
      </activity>
      
      <activity android:name="com.example.tutorialspoint7.myapplication.CustomActivity">

         <intent-filter>
            <action android:name = "android.intent.action.VIEW" />
            <action android:name = "com.example.tutorialspoint7.myapplication.LAUNCH" />
            <category android:name = "android.intent.category.DEFAULT" />
            <data android:scheme = "http" />
         </intent-filter>

      </activity>
   </application>

</manifest>

Essayons d'exécuter votre My Applicationapplication. Je suppose que vous avez créé votreAVDlors de la configuration de l'environnement. Pour exécuter l'application à partir d'Android Studio, ouvrez l'un des fichiers d'activité de votre projet et cliquez sur l' icône Exécuter dans la barre d'outils. Android Studio installe l'application sur votre AVD et la démarre et si tout va bien avec votre configuration et votre application, elle affichera la fenêtre Emulator suivante -

Commençons maintenant par le premier bouton "Démarrer le navigateur avec l'action VIEW". Ici, nous avons défini notre activité personnalisée avec un filtre "android.intent.action.VIEW", et il existe déjà une activité par défaut contre l'action VIEW définie par Android qui lance le navigateur Web. Ainsi, Android affiche deux options pour sélectionner l'activité que vous veulent se lancer.

Maintenant, si vous sélectionnez Navigateur, Android lancera le navigateur Web et ouvrira le site Web example.com, mais si vous sélectionnez l'option IndentDemo, Android lancera CustomActivity qui ne fera que capturer les données passées et s'affichera dans une vue texte comme suit -

Maintenant, revenez en arrière en utilisant le bouton de retour et cliquez sur le bouton "Démarrer le navigateur avec LAUNCH Action", ici Android applique un filtre pour choisir définir l'activité et lance simplement votre activité personnalisée

Encore une fois, revenez en arrière en utilisant le bouton retour et cliquez sur le bouton "Condition d'exception", ici Android essaie de trouver un filtre valide pour l'intention donnée mais il ne trouve pas une activité valide définie car cette fois nous avons utilisé des données comme https au lieu de http bien que nous donnions une action correcte, Android lève une exception et affiche l'écran suivant -