Latest web development tutorials

intention Android (d'intention) et le filtre (Filter)

intention Android est une description abstraite de l'action à exécuter. Il peut être commencé par une activité de startActivity, broadcastIntent pour envoyer la diffusion à tous les composants du récepteur de radio intéressés, startService (intention) ou bindService (intention, ServiceConnection, int) pour communiquer avec les services de back-end.

Intention lui-même (un objet Intent) est une structure de données passive qui détient la description abstraite de l'opération à effectuer.

Par exemple, vous avez un actif, ouvrez le client de messagerie et envoyer du courrier à votre appareil Android. A cet effet, vous devez envoyer activité ACTION_SEND avec un sélecteur adapté au processeur d'intention Android. sélecteur spécifié donné l'interface appropriée pour permettre à l'utilisateur de décider comment envoyer ses données de message.

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..."));

StartActivity syntaxe pour appeler les méthodes ci-dessus pour ouvrir l'activité e-mail, les résultats de l'exécution du code ressemble à ceci:

image

Par exemple, vous avez un actif, vous avez besoin d'ouvrir une URL sur les appareils Android via un navigateur. A cet effet, envoyer votre événement ACTION_WEB_SEARCH intention de processeurs Android intention d'ouvrir une URL donnée dans votre navigateur. Processeur intention en analysant une série d'activités, et de choisir une activité plus appropriée vous avez l'intention, dans ce cas, l'activité du navigateur Web. Processeur intention de passer sur votre page web adresse du navigateur Web, et d'ouvrir l'activité du navigateur Web.

String q = "http://www.uprogrammer.cn";
Intent intent = new Intent(Intent.ACTION_WEB_SEARCH );
intent.putExtra(SearchManager.QUERY, q);
startActivity(intent);

L'exemple ci-dessus va trouver "www.uprogrammer.cn" moteur de recherche sur Android, et donne des résultats sur une activité de mot-clé.

Pour chaque composante - activités, services, récepteurs de radiodiffusion ont mécanisme indépendant pour transmettre l'intention.

Non. Méthode et description
1 Context.startActivity (): l'intention passé à la méthode utilisée pour démarrer une nouvelle activité ou avoir une activité existante pour faire quelque chose de nouveau.
2 Context.startService (): l'intention passé à la méthode, l'initialisation d'un service, ou de nouvelles informations à un service persistant.
3 Context.sendBroadcast (): l'intention passé à la méthode, l'information sera remis à tous les récepteurs de radiodiffusion intéressés.

objet Intent

objet Intent est une trousse d'information pour le composant reçoit les intentions en tant que système Android reçoit des informations.

objet Intent comprend les éléments suivants, en fonction de ce que vous voulez communiquer ou exécuter.

Action (Action)

Il est de faire partie de l'intention de l'objet, il est représenté sous forme de chaîne. diffusion intention, l'action en cas, sera signalé. Action déterminera en grande partie la façon dont le reste de l'intention est organisée. classe Intent définit un ensemble d'actions constantes correspondant à différentes intentions. Voici l' action normative intention Android liste.

objet Intent en mouvement peut être réglé par la méthode setAction (), méthode par getAction () pour lire.

Données (Data)

Ajouter des données à l'intention des spécifications de filtre. Cette spécification peut être juste un type de données (telles que le type de cellule attribut), un URI, ou inclure les deux types de données et URI. Par l'URI pour spécifier les attributs des différentes parties.

Ces caractéristiques définissent le format de l'URL est facultative, mais également indépendants les uns des autres -

  • Si l'intention est pas spécifié mode de filtre, tous les autres biens URI est ignoré.
  • Si vous ne spécifiez pas d'hôte pour le filtre, les attributs portuaires, et les attributs de chemin sont ignorés.

méthode setData () ne peut être spécifié de données URI, setType () ne peut préciser le type de méta-données, setDataAndType () peut être spécifié types d'URI et d'éléments simultanément. URI par getData () pour lire, tapez par getType () pour lire.

Voici quelques exemples d'ensemble des actions / données -

Non. Action / données et une description
1 contenu ACTION_VIEW: // contacts / personnes / 1: 1 est affiché pour l'information de l'ID utilisateur.
2 contenu ACTION_DIAL: // contacts / personnes / 1: Afficher téléphone dialer, et remplir les données de l'utilisateur 1.
3 tel ACTION_VIEW: 123: Show numéroteur téléphonique, et remplir le nombre donné.
4 tel ACTION_DIAL: 123: Show numéroteur téléphonique, et remplir le nombre donné.
5 contenu ACTION_EDIT: // contacts / personnes / 1: Modifier l'utilisateur des informations d'identification 1.
6 contenu ACTION_VIEW: // contacts / personnes /: afficher une liste d'utilisateurs à afficher.
7 ACTION_SET_WALLPAPER: Sélectionnez le réglage de l'affichage d'écran.
8 ACTION_SYNC: synchroniser les données, la valeur par défaut: android.intent.action.SYNC
9 ACTION_SYSTEM_TUTORIAL: Plate-forme ouverte définition tutoriel (ou tutoriel de démarrage par défaut de didacticiel)
10 ACTION_TIMEZONE_CHANGED: Lorsque le fuseau horaire est modifié notification
11 ACTION_UNINSTALL_PACKAGE: vous exécutez le programme de désinstallation par défaut

catégorie

Catégorie est une partie optionnelle de l'intention, est une chaîne qui contient des informations supplémentaires sur les types de composants pour être traitées intentions. méthode AddCategory () avec l'intention d'ajouter la catégorie d'objet, la méthode removeCategory () pour supprimer avant d'ajouter les catégories, GetCategories () Obtient tous ensemble pour les catégories d'objets d'intention. Voici la catégorie normalisée intention Android liste.

Vous pouvez consulter les sections suivantes filtres intention de comprendre comment nous utilisons les catégories par une intention correspondante pour sélectionner les activités appropriées.

données supplémentaires

Ceci est passé à l'assemblée pour faire face à l'intention de l'information supplémentaire clé décrit ici. Sets par putExtras (), méthode getExtras () à lire. Voici des données supplémentaires norme intention Android liste.

marque

Ces balises sont une partie facultative de l'intention, indiquant que le système Android comment lancer l'activité, comment, après le début du traitement.

Non. Mots-clefs et descriptions
1 FLAG_ACTIVITY_CLEAR_TASK: Si l'intention, et passant par Context.startActivity, cette balise entraîne toutes les tâches existantes associées à l'activité est effacé avant l'événement commence. Les activités seront la racine d'une tâche vide, toute l'ancienne activité est terminée. L'utilisation de la marque peut être combiné avec FLAG_ACTIVITY_NEW_TASK.
2 FLAG_ACTIVITY_CLEAR_TOP: Si cette option est activée, l'événement sera lancé dans la tâche qui est en cours d'exécution. Cette maladie ne commence pas une nouvelle instance d'activité, toute l'activité sur elle est désactivée, cette intention comme une nouvelle intention est livré aux activités existantes du (actuellement au sommet).
3 FLAG_ACTIVITY_NEW_TASK: Cette balise est généralement utilisé pour de telles activités style "starter" du comportement: pour fournir aux utilisateurs une série de données peuvent être complétées de façon indépendante, et commencer les enfants séparés des activités complètes.

Nom du composant

nom de Component Object est un champ représentatif des activités, services ou récepteur de radiodiffusion classe optionnelle. Si elle est définie, l'objet Intent est passé à mettre en œuvre une instance de la classe conçue Sinon, Android d'autres intentions d'autres informations pour localiser une cible appropriée. Nom du composant par setComponent (), setClass () ou setClassName () pour mettre en place, () passer à travers getComponent.


Type d'intention

Android prend en charge deux types d'intentions.

image

L'intention explicite

Le monde intérieur d'une intention explicite de se connecter à l'application, si vous avez besoin de connecter une activité à une autre activité, nous pouvons démontrer l'intention, la figure suivante montre la connexion en cliquant sur le bouton première activité à la deuxième activité.

image

Le but de cibler le composant par nom, généralement utilisé pour l'application de l'information interne - comme une activité ou une activité filiale à démarrer une démarrer une activité de frères et sœurs. Par exemple:

// 通过指定类名的显式意图
Intent i = new Intent(FirstActivity.this, SecondAcitivity.class);

// 启动目标活动
startActivity(i);

L'intention implicite

Le but de ces objectifs ne nomme pas, le nom du composant de domaine est vide. intentions implicites sont souvent utilisés pour activer des composants 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 sera donné les résultats suivants:

image

composant cible reçoit l'intention, vous pouvez utiliser la méthode getExtras () pour obtenir des données supplémentaires transmises par le composant source. Par exemple:

// 在代码中的合适位置获取包对象
Bundle extras = getIntent().getExtras();

// 通过键解压数据
String value1 = extras.getString("Key1");
String value2 = extras.getString("Key2");

Exemples

L'exemple suivant illustre l'utilisation de l'intention de lancer Android une variété de fonctionnalités Android applications intégrées.

étape description
1 Utilisation de Studio Android IDE pour créer une application Android, appelé filtre Intention, package nommé cn.uprogrammer.intentfilter. Lorsque vous créez un projet, veiller à ce que le SDK cible et compiler avec la dernière version du SDK Android utiliser l'API avancée.
2 Modifier le fichier / cn.uprogrammer.intentfilter / de MainActivity.java src et ajoutez le code définit deux auditeurs les deux boutons correspondants "Navigateur Démarrer" et "Start Call"
3 Modifier res / layout / fichiers de mise en page de activity_main.xml, mise en ligne ajouter trois boutons.
4 Lancez l'émulateur Android pour exécuter l'application et de vérifier les résultats des modifications apportées à l'application.

Ce qui suit est le contenu du fichier src / cn.uprogrammer.intentfilter / de MainActivity.java:

package cn.uprogrammer.intentfilter;

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


public class MainActivity extends ActionBarActivity {
    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.uprogrammer.cn"));
                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);
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.

        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

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

<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="意图实例"
        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="www.uprogrammer.cn"
        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/ic_launcher"
        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="启动浏览器"
        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="启动电话"
        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 / valeurs / cordes / xml, définissant deux nouvelles constantes.

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string name="app_name">Intent filter</string>
   <string name="action_settings">Settings</string>
</resources>

Ce qui suit est le contenu AndroidManifest.xml par défaut:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="cn.uprogrammer.intentfilter"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="22" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Base.Theme.AppCompat" >

        <activity
            android:name="cn.uprogrammer.intentfilter.MainActivity"
            android:label="@string/app_name" >

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

        </activity>

    </application>
</manifest>

Disons simplement exécuter une applications de filtrage d'intention modifiés. Je suppose que vous avez créé AVD au cours de l'environnement d'installation. Ouvrez votre projet dans le fichier actif, cliquez sur la barre d'outils image Icône pour exécuter l'application Dans Android Studio. Android studio installer l'application sur la DAV et démarre. Si tout va bien, il sera affiché sur la fenêtre de l'émulateur comme suit:

image

Maintenant, cliquez sur le bouton "Démarrer le navigateur", qui va lancer un navigateur, selon la configuration et afficher http://www.uprogrammer.cn comme suit:

image

De la même manière, vous pouvez cliquer sur le bouton "Démarrer Appel" pour ouvrir l'interface de téléphone, ce qui vous permettra de composer des numéros de téléphone ont été donnés.


Filtres d'intention

Vous avez vu comment utiliser l'intention d'appeler une autre activité. système d'exploitation Android utilise des filtres pour spécifier une gamme d'activités, de services et récepteurs de radiodiffusion gérer l'intention, besoin de l'aide d'intention spécifiée catégorie d'action, le modèle de données. Utilisez <intention filter> élément dans le fichier manifeste figurant dans les actions, les catégories et les types de données correspondant à des activités, des services et récepteurs de radiodiffusion.

L'exemple suivant montre une partie du fichier AndroidManifest.xml spécifié par l'action d'un cn.uprogrammer.intentfilter.CustomActivity actif peut définir des catégories et des appels de données:

<activity android:name=".CustomActivity"
   android:label="@string/app_name">

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

</activity>

Lorsque l'activité est définie au-dessus du filtre, d'autres activités vous pouvez utiliser de la façon suivante pour invoquer cet événement. Utilisez android.intent.action.VIEW, utilisez l'action cn.uprogrammer.intentfilter.LAUNCH et de fournir la catégorie android.intent.category.DEFAULT.

Element spécifie les activités à appeler le type de données attendu. Des exemples de ce qui précède, l'activité personnalisée données souhaitées à partir de la "http: //" au début.

Tel est le cas, à travers le filtre, il est destiné à être livré à des activités multiples ou des services auxquels l'utilisateur sera invité à commencer l'assemblage. Si vous ne trouvez pas le composant cible, une exception se produit.

Avant d'appeler l'événement, une série de Check Android Test:

  • Filtre <intention filtre> besoin de lister un ou plusieurs de l'action, ne peut pas être vide, comprenant au moins un filtre Element, sinon il va bloquer toutes les intentions. Si plusieurs actions sont mentionnées, Android avant d'appeler une action pour tenter de faire correspondre les activités qui y sont mentionnées.
  • Filtre <intention filtre> 0 peut être répertorié, une ou plusieurs catégories. Si aucune catégorie est mentionné, Android à travers ce test, s'il y a plusieurs catégories mentionnées, il est prévu par le type de test, la classification de chaque objet Intent doit correspondre au filtre dans une catégorie.
  • chaque Element peut spécifier un URI et un type de données (types de médias Element). Il y a séparation des biens, que chaque partie de l'URI: schéma, hôte, le port et le chemin. Et le type d'intention comprend un URI, seul son type correspond à un certain type de types de données de filtre énumérés dans la section de test.

Exemples

Les exemples suivants sont des modifications des exemples ci-dessus. Ici, nous allons voir si une intention définie pour appeler deux événements, Android comment résoudre le conflit, comment utiliser les filtres pour appeler une activité personnalisée, s'il n'y a pas l'intention de définir les activités appropriées seront anormaux.

étape explication
1 Utilisation de Studio Android IDE pour créer une application Android, appelé filtre Intention, package nommé cn.uprogrammer.intentfilter. Lorsque vous créez un projet, veiller à ce que le SDK cible et compiler avec la dernière version du SDK Android utiliser l'API avancée.
2 Modifier le fichier src / cn.uprogrammer.intentfilter / de MainActivity.java, ajoutez le code pour définir trois auditeurs à trois boutons correspondant à la mise en page définie dans le document.
3 Ajouter un fichier src / cn.uprogrammer.intentfilter / de CustomActivity.java d'inclure une activité qui peut être un différents appels d'intention.
4 Modifier res / layout activity_main.xml fichier layout / linéaire ajouter trois boutons.
5 Ajouter res lauout fichier / / custom_view.xml de mise en page, ajoutez simplement Pour afficher les données transmises par l'intention.
6 Modifier AndroidManifest.xml fichier, ajoutez la <intention filtre> définition de règles destinées à invoquer des activités personnalisées.
7 Lancez l'émulateur Android pour exécuter l'application et de vérifier les résultats des modifications apportées à l'application.

Ce qui suit est le contenu de src / cn.uprogrammer.intentfilter / MainActivity.java de:

package cn.uprogrammer.intentfilter;

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


public class MainActivity extends ActionBarActivity {
    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.uprogrammer.cn"));
                startActivity(i);
            }
        });

        b2=(Button)findViewById(R.id.button2);
        b2.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent i = new Intent("cn.uprogrammer.intentfilter.LAUNCH",Uri.parse("http://www.uprogrammer.cn"));
                startActivity(i);
            }
        });

        b3=(Button)findViewById(R.id.button3);
        b3.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent i = new Intent("cn.uprogrammer.intentfilter.LAUNCH",Uri.parse("https://www.uprogrammer.cn"));
                startActivity(i);
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.

        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

Voici ce que src / cn.uprogrammer.intentfilter / CustomActivity.java de:

package cn.uprogrammer.intentfilter;

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

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 de:

<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="意图实例"
        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="www.uprogrammer.cn"
        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/ic_launcher"
        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="通过View动作启动浏览器"
        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="通过Launch动作启动浏览器"
        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" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="异常情况"
        android:id="@+id/button3"
        android:layout_below="@+id/button2"
        android:layout_alignLeft="@+id/button2"
        android:layout_alignStart="@+id/button2"
        android:layout_alignRight="@+id/textView2"
        android:layout_alignEnd="@+id/textView2" />

</RelativeLayout>

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

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent">

   <TextView android:id="@+id/show_data"
      android:layout_width="fill_parent"
      android:layout_height="400dp"/>

</LinearLayout>

Voici le contenu de res / valeurs / fichier strings.xml:

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

Voici le contenu du fichier AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="cn.uprogrammer.intentfilter"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="22" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Base.Theme.AppCompat" >

        <activity
            android:name="cn.uprogrammer.intentfilter.MainActivity"
            android:label="@string/app_name" >

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

        </activity>

        <activity android:name="cn.uprogrammer.intentfilter.CustomActivity"
            android:label="@string/app_name">

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <action android:name="cn.uprogrammer.intentfilter.LAUNCH" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="http" />
        </intent-filter>

        </activity>

    </application>
</manifest>

Disons simplement exécuter une applications de filtrage d'intention modifiés. Je suppose que vous avez créé AVD au cours de l'environnement d'installation. Ouvrez votre projet dans le fichier actif, cliquez sur la barre d'outils image Icône pour exécuter l'application Dans Android Studio. Android studio installer l'application sur la DAV et démarre. Si tout va bien, il sera affiché sur la fenêtre de l'émulateur comme suit:

image

Cliquez sur le premier bouton, "Utilisation de View action pour lancer le navigateur." Ici, nous définissons notre activité personnalisée contient "android.intent.action.VIEW", et le système Android a été défini pour correspondre à la valeur par défaut VIEW actif action pour démarrer le navigateur Web, Android affiche les options suivantes pour choisir ce que vous voulez commencer activité:

image

Si vous choisissez un navigateur, Android va lancer un navigateur Web et le site Web de www.uprogrammer.cn ouvert. Si vous choisissez l'option IntentDemo, Android va commencer CustomActivity, l'événement n'a pas fait quoi que ce soit, juste saisir et d'afficher les données transmises dans le TextView.

image

Maintenant, grâce à la touche Retour et cliquez sur "l'action de lancement en démarrant le navigateur" bouton, où Android appliquer des filtres pour sélectionner les activités définies, et tout simplement commencer les activités personnalisées.

Encore une fois utiliser le bouton de retour pour revenir et cliquez sur le bouton «conditions exceptionnelles», essayez d'en trouver un où Android intention donnée par les filtres efficaces, mais ne pouvait pas trouver une définition de l'activité effective. Parce que nous utilisons https au lieu de http données, et compte tenu de la bonne action, une fois Android générer une exception. Comme suit:

image