Latest web development tutorials

intención Android (Intención) y el filtro (filtro)

intención Android es una descripción abstracta de la acción a ejecutar. Puede ser iniciado por una actividad startActivity, broadcastIntent para enviar emisión a cualquiera de los componentes del receptor de radio interesadas, StartService (Intención) o bindService (Intención, ServiceConnection, int) para comunicarse con los servicios de back-end.

Intención sí mismo (un objeto Intención) es una estructura de datos pasivo que contiene la descripción abstracta de la operación a realizar.

Por ejemplo, usted tiene un activo, abra el cliente de correo y enviar correo a su dispositivo Android. Para este propósito, es necesario enviar la actividad ACTION_SEND con un selector adecuado para el procesador intención Android. selector especificado dada la interfaz apropiada para permitir al usuario decidir cómo enviar sus datos de mensaje.

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 sintaxis para llamar a los métodos anteriores para abrir la actividad de correo electrónico, los resultados de ejecutar el código es el siguiente:

imagen

Por ejemplo, usted tiene un activo, es necesario abrir una URL en los dispositivos Android a través de un navegador. Con este fin, enviar su caso a la intención intención ACTION_WEB_SEARCH procesadores Android para abrir una determinada URL en su navegador. Procesador intención mediante el análisis de una serie de actividades, y para elegir la más adecuada una actividad tiene la intención, en este caso, la actividad del navegador Web. Procesador intención de transmitir su dirección de página Web en el navegador Web y abre la actividad del navegador Web.

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

El ejemplo anterior se encuentra el motor de búsqueda "www.uprogrammer.cn" en Android, y da resultados en una actividad clave.

Para cada componente - las actividades, los servicios, los medios electrónicos tienen receptores mecanismo independiente para transmitir la intención.

No. Método y Descripción
1 Context.startActivity (): la intención pasa al método utilizado para iniciar una nueva actividad o tienen una actividad existente para hacer algo nuevo.
2 Context.startService (): la intención pasado al método, inicializar un servicio, o una nueva información a un servicio persistente.
3 Context.sendBroadcast (): intención pasado al método, la información se entrega a todos los receptores de radiodifusión interesadas.

objeto intención

Intención objeto es un conjunto de información para el componente recibe intenciones como sistema Android recibe la información.

Intención de objetos incluye los siguientes componentes, en función de lo que se quiere comunicar o realizar.

Acción (Acción)

Es de ser parte de la intención del objeto, se representa como una cadena. Intención de difusión, la acción en el evento, se informó. Acción determinará en gran medida cómo se organiza el resto de intención. Intención de clase define un conjunto de constantes acciones correspondientes a diferentes intenciones. Aquí está la acción estándar intención Android lista.

objeto Intención en movimiento se puede ajustar por el método setAction (), método por el getAction () para leer.

Datos (Data)

Añadir datos a la intención de las especificaciones del filtro. Esta especificación puede ser sólo un tipo de datos (como atributo de tipo celular), un URI, o incluir ambos tipos de datos y URI. Por el URI para especificar los atributos de las diferentes partes.

Estos atributos especifican el formato de la URL es opcional, pero también independientes entre sí -

  • Si la intención no se especifica el modo de filtro, todos los demás bienes URI se ignora.
  • Si no se especifica un host para el filtro, los atributos de puertos y los atributos de ruta se ignoran.

setData método () sólo se puede especificar los datos de URI, setType () sólo se puede especificar el tipo de datos de metadatos, setDataAndType () se puede especificar URI y el elemento tipos simultáneamente. URI por getData () para leer, por tipo getType () para leer.

Estos son algunos ejemplos de conjunto de acciones / de datos -

No. Acción / datos y una descripción
1 ACTION_VIEW contenido: // contactos / personas / 1: 1 se muestra la información de ID de usuario.
2 ACTION_DIAL contenido: // contactos / personas / 1: Mostrar el número de marcador, y rellenar los datos del usuario 1.
3 tel ACTION_VIEW: 123: Mostrar el número de marcador, y complete el número dado.
4 tel ACTION_DIAL: 123: Mostrar el número de marcador, y complete el número dado.
5 ACTION_EDIT contenido: // contactos / personas / 1: editar la información de ID de usuario 1.
6 ACTION_VIEW contenido: // contactos / personas /: muestra una lista de usuarios para ver.
7 ACTION_SET_WALLPAPER: Seleccione la configuración de pantalla fondo de pantalla.
8 ACTION_SYNC: sincronizar los datos, el valor por defecto: android.intent.action.SYNC
9 ACTION_SYSTEM_TUTORIAL: Plataforma abierta definición tutorial (o por defecto de inicio tutorial Tutorial)
10 ACTION_TIMEZONE_CHANGED: Cuando la zona vez que se cambia la notificación
11 ACTION_UNINSTALL_PACKAGE: ejecutar el programa de desinstalación predeterminado

categoría

Categoría es una parte opcional de la intención, es una cadena que contiene información adicional sobre los tipos de componentes para ser procesados ​​intenciones. AddCategory método () con la intención de añadir la categoría de objeto, método removeCategory () para eliminar antes de la adición de categorías, getCategories () obtiene todo listo para las categorías de objetos intención. Esta es la categoría estándar intención Android lista.

Puede ver las siguientes secciones filtros intención de comprender cómo usamos categorías por una intención correspondiente para seleccionar las actividades apropiadas.

datos adicionales

Esto se hace pasar a la asamblea para tratar con la intención de obtener información adicional clave que se describe en este documento. Conjuntos de putExtras (), el método getExtras () para leer. Aquí está el adicional de datos estándar intención Android lista.

marca

Estas etiquetas son una parte opcional de la intención, lo que indica el sistema Android de cómo iniciar la actividad, cómo después de comenzar el tratamiento.

No. Etiquetas y descripciones
1 FLAG_ACTIVITY_CLEAR_TASK: Si la intención, y que pasa por Context.startActivity, esta etiqueta hará que todas las tareas existentes asociados con la actividad se borra antes de que comience el evento. Las actividades serán la raíz de una tarea vacía, se termina toda la vieja actividad. El uso de la marca se puede combinar con FLAG_ACTIVITY_NEW_TASK.
2 FLAG_ACTIVITY_CLEAR_TOP: Si se establece este indicador, el evento se inició en la tarea que se está ejecutando actualmente. Esta enfermedad no se inicia una nueva instancia de actividad, toda la actividad en que se apaga, esta intención como un nuevo intento se entrega a las actividades de la existentes (actualmente en la parte superior).
3 FLAG_ACTIVITY_NEW_TASK: Esta etiqueta se utiliza generalmente para este tipo de actividades de estilo de "arranque" de la conducta: proporcionar a los usuarios una serie de datos se puede completar de forma independiente, y empezar otra para niños actividades completas.

Nombre del componente

Nombre del objeto componente es un representante de la clase actividades, servicios o receptor de radiodifusión campo opcional. Si se establece, el objeto se pasa Intención para implementar una instancia de la clase diseñada De lo contrario, Android otras intenciones otra información para localizar un objetivo adecuado. Nombre del componente por setComponent (), setClass () o setClassName () para configurar, () obtener a través de getComponent.


Tipo de intención

Android es compatible con dos tipos de intenciones.

imagen

intención explícita

El mundo interior de una intención explícita para conectar la aplicación, si es necesario conectar una actividad a otra actividad, podemos mostrar la intención, la siguiente figura muestra la conexión haciendo clic en el botón primera actividad a la segunda actividad.

imagen

La intención de dirigirse a los componentes por su nombre, utiliza generalmente para la aplicación de la información interna - tales como una actividad o una actividad subsidiaria para iniciar un comenzar una actividad de hermanos. Por ejemplo:

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

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

la intención implícita

La intención de estos objetivos no nombre, el nombre del componente de dominio está en blanco. intenciones implícitas a menudo se utilizan para activar los componentes de otras aplicaciones. Por ejemplo:

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

El código anterior se le dará los siguientes resultados:

imagen

componente de destino recibe intención, puede utilizar el método getExtras () para obtener datos adicionales transmitidos por el componente de origen. Por ejemplo:

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

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

Ejemplos

El siguiente ejemplo muestra el uso de la intención de Android para lanzar una variedad de características de Android aplicaciones integradas.

paso descripción
1 El uso de Android Studio IDE para crear una aplicación para Android, llamado filtro de Intención, paquete denominado cn.uprogrammer.intentfilter. Cuando se crea un proyecto, asegúrese de que el SDK de destino y compilar con la última versión del SDK de Android utilizar API avanzada.
2 Modificar el archivo / cn.uprogrammer.intentfilter / MainActivity.java src y añadir el código define dos oyentes a los dos botones correspondientes "Navegador de Inicio" y "inicio de la llamada"
3 Modificar res / layout / archivos de diseño activity_main.xml, un diseño en línea añadir tres botones.
4 Lanzar emulador de Android para ejecutar la aplicación y verificar los resultados de los cambios realizados en la aplicación.

El siguiente es el contenido del fichero src / cn.uprogrammer.intentfilter / 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);
    }
}

Este es el contenido de la resolución de archivo / diseño / 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>

Este es el contenido de res / valores / cuerdas / xml, que define dos nuevas constantes.

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

El siguiente es el contenido AndroidManifest.xml por defecto:

<?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>

Vamos a ejecutar un filtro Intención aplicaciones modificadas. Asumo que ha creado AVD en el entorno de instalación. Abra el proyecto en el archivo activo, haga clic en la barra de herramientas imagen Icono para ejecutar la aplicación en Android Studio. Android Estudio instalar la aplicación en la AVD y la inicia. Si todo va bien, se mostrará en la ventana de emulación de la siguiente manera:

imagen

Ahora haga clic en el botón "Start Browser", que se lanzará un navegador, dependiendo de la configuración y mostrar http://www.uprogrammer.cn de la siguiente manera:

imagen

De manera similar, puede hacer clic en el botón "Iniciar llamada" para abrir la interfaz del teléfono, lo que le permitirá marcar se les ha dado números de teléfono.


intención Filtros

Usted ha visto cómo utilizar la intención de llamar a otra actividad. sistema operativo Android utiliza filtros para especificar un rango de actividades, servicios y receptores de radiodifusión manejar intención, necesita la ayuda de intención datos Clase de acción, el patrón de datos. Utilice <intención de filtro> en el archivo de manifiesto que figuran en los de acción, categorías y tipos de datos correspondientes en las actividades, servicios y receptores de radiodifusión.

El siguiente ejemplo muestra una parte del archivo AndroidManifest.xml especificado por la acción de un cn.uprogrammer.intentfilter.CustomActivity activo puede establecer categorías y las llamadas de datos:

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

Cuando se define la actividad por encima del filtro, otras actividades que se pueden utilizar de la siguiente manera para invocar este evento. Utilice android.intent.action.VIEW, utilice la acción cn.uprogrammer.intentfilter.LAUNCH y proporcionar categoría android.intent.category.DEFAULT.

Elemento especifica las actividades que se llama el tipo de datos esperado. Ejemplos de lo anterior, la actividad personalizada desean datos de la "http: //" al principio.

Este es el caso, a través del filtro, que está destinado a ser entregado a múltiples actividades o servicios a los que se le pedirá al usuario para iniciar el montaje. Si usted no encuentra el componente de destino, se produce una excepción.

Antes de llamar al evento, una serie de test Entrada Android:

  • Filtro <-filtro intención> necesitará enumerar uno o más de la acción, no puede estar vacío; que comprende al menos un filtro Elemento, de lo contrario se bloqueará todos los intentos. Si se mencionan varias acciones, Android antes de llamar a una acción para tratar de igualar las actividades mencionadas en el mismo.
  • Filtros <intención de filtro> 0 se puede enumerar, una o más categorías. Si no se menciona ninguna categoría, Android a través de esta prueba, si hay varias categorías mencionadas, se pretende por el tipo de prueba, la clasificación de cada objeto Intención debe coincidir con el filtro en una categoría.
  • cada Elemento puede especificar un URI y un tipo de datos (tipos de medios Element). Hay separación de bienes, ya que cada parte de la URI: esquema, host, el puerto y la ruta. Y el tipo de intención incluye un URI, única en su tipo coincide con un cierto tipo de tipos de datos de filtrado expuestos a través de la sección de pruebas.

Ejemplos

Los ejemplos siguientes son algunas modificaciones de los ejemplos anteriores. Aquí vamos a ver si una intención definida para llamar a dos eventos, Android cómo resolver el conflicto; cómo utilizar filtros para invocar una actividad personalizada; si no hay intención de definir las actividades apropiadas será anormal.

paso explicación
1 El uso de Android Studio IDE para crear una aplicación para Android, llamado filtro de Intención, paquete denominado cn.uprogrammer.intentfilter. Cuando se crea un proyecto, asegúrese de que el SDK de destino y compilar con la última versión del SDK de Android utilizar API avanzada.
2 Modificar el archivo src / cn.uprogrammer.intentfilter / MainActivity.java, añadir el código para definir tres oyentes a tres botones correspondientes a la disposición definida en el documento.
3 Añadir fichero src / cn.uprogrammer.intentfilter / CustomActivity.java para incluir una actividad que puede ser un diferentes llamadas intención.
4 Modificar los archivos res / layout / activity_main.xml lineal diseño añaden tres botones.
5 Añadir resolución de archivo / lauout / custom_view.xml diseño, sólo tiene que añadir Para visualizar los datos transmitidos por la intención.
6 Modificar AndroidManifest.xml archivo, agregue el <-filtro intención> definición de reglas para invocar actividades personalizadas.
7 Lanzar emulador de Android para ejecutar la aplicación y verificar los resultados de los cambios realizados en la aplicación.

El siguiente es el contenido 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);
    }
}

Esto es lo 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());
    }
}

Este es el contenido 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>

Este es el contenido de la resolución de archivo / diseño / 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>

Este es el contenido de res / valores de archivo / strings.xml:

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

Este es el contenido del archivo 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>

Vamos a ejecutar un filtro Intención aplicaciones modificadas. Asumo que ha creado AVD en el entorno de instalación. Abra el proyecto en el archivo activo, haga clic en la barra de herramientas imagen Icono para ejecutar la aplicación en Android Studio. Android Estudio instalar la aplicación en la AVD y la inicia. Si todo va bien, se mostrará en la ventana de emulación de la siguiente manera:

imagen

Haga clic en el primer botón, "Utilización de Vista en la acción para iniciar el navegador." Aquí definimos nuestra actividad personalizada contiene "android.intent.action.VIEW", y el sistema Android se ha definido para corresponder a la acción por defecto activa VER para iniciar el navegador Web, Android muestra las siguientes opciones para elegir lo que desea iniciar la actividad:

imagen

Si elige un navegador, Android se lanzará un navegador web y el sitio web www.uprogrammer.cn abierta. Si la opción IntentDemo que elija, Android se iniciará CustomActivity, el evento no hacer nada, sólo capturar y visualizar los datos que se pasan en el TextView.

imagen

Ahora, a través del botón Atrás y haga clic en "acción Lanzamiento iniciando Browser" botón, donde Android aplicar filtros para seleccionar las actividades definidas, y simplemente comenzar las actividades personalizadas.

Una vez más utilizar el botón Atrás para volver atrás y hacer clic en el botón "condiciones excepcionales", tratar de encontrar uno en el Android intención dada por los filtros eficaces, pero no pudo encontrar una definición de actividad efectiva. Debido a que usamos https en lugar de http datos, y teniendo en cuenta la acción correcta, una vez que Android generar una excepción. En la siguiente manera:

imagen