Latest web development tutorials

intenção Android (Intenção) e filtro (Filter)

intenção Android é uma descrição abstrata da ação a ser executada. Ele pode ser iniciado por um atividades startActivity, broadcastIntent para enviar transmiti-lo a todos os componentes do receptor de rádio interessadas, StartService (Intenção) ou bindService (Intenção, ServiceConnection, int) para se comunicar com os serviços de back-end.

em si (um objeto Intent) Intenção é uma estrutura de dados passiva que detém a descrição abstrata da operação a ser executada.

Por exemplo, você tem um ativo, abra o cliente de email e enviar e-mails para o seu dispositivo Android. Para este efeito, você precisa enviar atividade ACTION_SEND com um selector adequado para o processador intenção Android. selector especificado dada a interface apropriada para deixar o usuário decidir como enviar seus dados de mensagem.

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

sintaxe startActivity para chamar os métodos acima para abrir a atividade de e-mail, os resultados da execução do código se parece com isso:

imagem

Por exemplo, você tem um ativo, você precisa abrir uma URL em dispositivos Android através de um browser. Para este efeito, envie seu evento ACTION_WEB_SEARCH intenção de processadores Android intenção de abrir uma determinada URL no seu browser. intenção do processador através da análise de uma série de atividades, e para escolher a uma atividade mais adequada que você pretende, neste caso, a atividade do navegador Web. intenção processador para passar o seu endereço de página da web para o navegador da Web e abra a atividade do navegador Web.

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

O exemplo acima vai encontrar "www.uprogrammer.cn" motor de busca no Android, e dá resultados em uma atividade de palavra-chave.

Para cada componente - actividades, serviços, receptores de radiodifusão têm mecanismo independente para transmitir a intenção.

Não. Método e Descrição
1 Context.startActivity (): intenção passado para o método usado para iniciar uma nova atividade ou ter uma atividade existente para fazer algo novo.
2 Context.startService (): intenção passado para o método, iniciar um serviço, ou novas informações a um serviço persistente.
3 Context.sendBroadcast (): intenção passado para o método, a informação vai ser entregue a todos os receptores de radiodifusão interessadas.

intenção objeto

Intenção objeto é um pacote de informação para componente recebe intenções como o sistema Android recebe informações.

Intenção objeto inclui os seguintes componentes, dependendo do que você quer se comunicar ou realizar.

Ação (Ação)

É ser parte da intenção do objeto, ele é representado como uma string. Intenção de transmissão, a ação do evento, será relatado. Acção determinará em grande parte como o resto de intenções está organizado. Intenção classe define um conjunto de constantes ações correspondentes a diferentes intenções. Aqui é a ação padrão intenção Android lista.

Intenção objeto em movimento pode ser ajustado pelo método setAction (), por getAction () para ler.

Os dados (Dados)

Adicionar dados à intenção das especificações de filtro. Esta especificação pode ser apenas um tipo de dados (como o atributo tipo de célula), a URI, ou incluir ambos os tipos de dados e URI. Pelo URI para especificar propriedades de diferentes porções.

Estes atributos especificar o formato do URL é opcional, mas também independentes uns dos outros -

  • Se a intenção não é especificado no modo de filtro, todas as outras propriedades URI é ignorado.
  • Se você não especificar um host para o filtro, os atributos de portas e atributos de caminho são ignorados.

setData () método só pode ser especificado dados URI, setType () só pode especificar o tipo de dados de meta, setDataAndType () pode ser especificado tipos de URI e de elementos simultaneamente. URI por getData () para ler, tipo por getType () para ler.

Aqui estão alguns exemplos de conjunto de acções / data -

Não. Ação / dados e uma descrição
1 conteúdo ACTION_VIEW: // contatos / pessoas / 1: 1 é exibido para as informações de identificação do usuário.
2 conteúdo ACTION_DIAL: // contatos / pessoas / 1: Mostrar telefone discador, e preencher os dados do usuário 1.
3 tel ACTION_VIEW: 123: Show discador, e preencher o número dado.
4 tel ACTION_DIAL: 123: Show discador, e preencher o número dado.
5 conteúdo ACTION_EDIT: // contatos / pessoas / 1: Edite as informações de identificação do usuário 1.
6 conteúdo ACTION_VIEW: // contatos / pessoas /: exibir uma lista de usuários para ver.
7 ACTION_SET_WALLPAPER: Seleccione a definição de visualização do fundo.
8 ACTION_SYNC: sincronizar os dados, valor padrão: android.intent.action.SYNC
9 ACTION_SYSTEM_TUTORIAL: Plataforma aberta definição tutorial (ou padrão início tutorial Tutorial)
10 ACTION_TIMEZONE_CHANGED: Quando o fuso horário é alterado notificação
11 ACTION_UNINSTALL_PACKAGE: você executar o desinstalador padrão

categoria

Categoria é uma parte opcional da intenção, é uma cadeia que contém informações adicionais sobre os tipos de componentes a serem intenções processados. AddCategory () com a intenção de adicionar a categoria de objeto, removeCategory () método para remover antes de categorias, acrescentando: GetCategories () Obtém tudo pronto para as categorias de objeto intenção. Aqui é a categoria padrão intenção Android lista.

Você pode ver as seções seguintes filtros intenção de compreender como usamos categorias por uma intenção correspondente para selecionar as atividades adequadas.

dados adicionais

Esta é passado para o conjunto para lidar com a intenção de obter informações adicionais chave aqui descrito. Conjuntos de putExtras (), getExtras () para ler. Aqui está a dados adicionais padrão intenção Android lista.

marca

Estas tags são uma parte opcional da intenção, indicando que o sistema Android como iniciar a atividade, como após o início do tratamento.

Não. Tags e descrições
1 FLAG_ACTIVITY_CLEAR_TASK: Se a intenção, e passando por Context.startActivity, esta tag fará com que todas as tarefas existentes associados à actividade é limpo antes do início do evento. Atividades será a raiz de uma tarefa vazio, toda a actividade de idade é encerrado. O uso da marca pode ser combinado com FLAG_ACTIVITY_NEW_TASK.
2 FLAG_ACTIVITY_CLEAR_TOP: Se este sinalizador estiver definido, o evento será iniciado na tarefa que está sendo executado. Esta doença não inicia uma nova instância de atividade, toda a atividade em que esteja desligado, esta intenção como uma nova intenção é entregue às atividades existentes (atualmente no topo).
3 FLAG_ACTIVITY_NEW_TASK: Esta marca é geralmente usado para tais atividades estilo "arranque" do comportamento: para fornecer aos usuários uma série de dados podem ser concluídas de forma independente, e iniciar uma separada para crianças completam as atividades.

Nome do componente

nome Component Object é um representante de classe atividades, serviços ou receptor de radiodifusão campo opcional. Se definido, a intenção objeto é passado para implementar uma instância da classe projetado Caso contrário, Android outras intenções outras informações para localizar um alvo adequado. nome do componente por setComponent (), setClass () ou setClassName () para definir-se, () passar getComponent.


Tipo de intenções

Android suporta dois tipos de intenções.

imagem

intenção explícita

O mundo interior de uma intenção explícita para conectar o aplicativo, se você precisa se conectar uma atividade para outra atividade, podemos mostrar a intenção, a figura abaixo mostra a conexão clicando na primeira atividade botão para a segunda atividade.

imagem

A intenção de alvejar componente pelo nome, geralmente utilizado para a aplicação de informações internas - como uma atividade subsidiária ou atividade para iniciar um iniciar uma actividade irmãos. Por exemplo:

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

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

intenção implícita

A intenção destes objectivos não nomear, o nome do componente de domínio está em branco. intenções implícitas são muitas vezes utilizados para ativar componentes de outras aplicações. Por exemplo:

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

O código acima serão apresentados os seguintes resultados:

imagem

componente de destino recebe a intenção, você pode usar o método getExtras () para obter dados adicionais transmitidos pelo componente de origem. Por exemplo:

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

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

Exemplos

O exemplo a seguir demonstra o uso da intenção Android para lançar uma variedade de funcionalidades do Android aplicativos embutidos.

passo descrição
1 Usando Android Studio IDE para criar um aplicativo Android, chamado Intenção filtro, pacote chamado cn.uprogrammer.intentfilter. Quando você cria um projeto, garantir que o SDK alvo e compilar com a versão mais recente do Android SDK usar API avançado.
2 Modificar o arquivo / cn.uprogrammer.intentfilter / MainActivity.java src e adicione o código define dois ouvintes para os dois botões correspondentes "Browser Start" e "Iniciar Chamada"
3 Modificar res / layout / arquivos de layout activity_main.xml, layout on-line adicionar três botões.
4 Lançar emulador Android para executar o aplicativo e verificar os resultados das alterações feitas no aplicativo.

O seguinte é o conteúdo do arquivo 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);
    }
}

Aqui está o conteúdo de res / layout arquivo / 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>

Aqui está o conteúdo de res / valores / cordas / xml, definindo duas novas constantes.

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

O seguinte é o conteúdo AndroidManifest.xml padrão:

<?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 apenas executar algumas aplicações de filtro de intenção modificados. Presumo que você criou AVD durante o ambiente de instalação. Abra o projeto no arquivo ativo, clique na barra de ferramentas fotografia Ícone para executar o aplicativo no Android Studio. Estúdio Android instalar o aplicativo no AVD e inicia-lo. Se tudo correr bem, ele será exibido na janela do emulador da seguinte forma:

imagem

Agora clique no botão "Iniciar Browser", que vai lançar um navegador, dependendo da configuração e exibir http://www.uprogrammer.cn da seguinte forma:

imagem

De maneira semelhante, você pode clicar no botão "Iniciar Chamada" para abrir a interface do telefone, o que permitirá que você discar números de telefone ter sido dado.


intenção Filtros

Você já viu como usar a intenção de chamar uma outra atividade. sistema operacional Android usa filtros para especificar uma série de atividades, serviços e receptores de radiodifusão lidar com intenção, precisamos da ajuda de intenções especificado categoria ação, o padrão de dados. Use <intent-filter> elemento no arquivo de manifesto listados nos correspondentes ação, categorias e tipos de dados nas atividades, serviços e receptores de radiodifusão.

O exemplo a seguir mostra parte do arquivo AndroidManifest.xml especificado pela ação de um cn.uprogrammer.intentfilter.CustomActivity ativa pode definir categorias e chamadas de dados:

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

Quando a actividade é definida acima do filtro, outras atividades que você pode usar a seguinte maneira de chamar este evento. Use android.intent.action.VIEW, use a ação cn.uprogrammer.intentfilter.LAUNCH e fornecer categoria android.intent.category.DEFAULT.

Elemento especifica as atividades a ser chamado o tipo de dados esperado. Exemplos do acima, a actividade personalizada desejada dos dados a partir do "http: //" no início.

Este é o caso, através do filtro, que se destina a ser entregue para múltiplas ou serviços aos quais o utilizador será pedido para iniciar a montagem. Se você não encontrar o componente de destino, ocorre uma exceção.

Antes de ligar para o evento, uma série de verificação de teste Android:

  • Filtrar <intent-filter> precisa listar um ou mais da ação, não pode estar vazio; que compreende pelo menos um filtro Elemento, caso contrário ele irá bloquear todas as intenções. Se várias ações são mencionados, Android antes de chamar uma ação para tentar corresponder as atividades nele mencionadas.
  • Filtro <intent-filter> 0 pode ser listado, uma ou mais categorias. Se nenhuma categoria é mencionado, o Android através deste teste, se houver várias categorias mencionadas, pretende-se pelo tipo de teste, a classificação de cada objeto Intenção deve coincidir com o filtro em uma categoria.
  • cada Elemento pode especificar um URI e um tipo de dados (tipos de mídia elemento). Há propriedade separada, já que cada parte da URI: esquema, host, porta e caminho. E tipo de intenção inclui um URI, apenas o seu tipo corresponde a um certo tipo de tipos de dados de filtro listados através da secção de ensaio.

Exemplos

Os exemplos seguintes são algumas modificações dos exemplos acima. Aqui vamos ver se uma intenção definida para chamar dois eventos, Android como resolver o conflito; como usar filtros para invocar uma atividade personalizada; se não houver intenção de definir as atividades apropriadas será anormal.

passo explicação
1 Usando Android Studio IDE para criar um aplicativo Android, chamado Intenção filtro, pacote chamado cn.uprogrammer.intentfilter. Quando você cria um projeto, garantir que o SDK alvo e compilar com a versão mais recente do Android SDK usar API avançado.
2 Modificar o arquivo src / cn.uprogrammer.intentfilter / MainActivity.java, adicione o código para definir três ouvintes a três botões correspondentes ao layout definido no documento.
3 Adicionar ficheiro src / cn.uprogrammer.intentfilter / CustomActivity.java para incluir uma atividade que pode ser um diferentes chamadas intenção.
4 Modificar res / layout arquivo layout / activity_main.xml linear adicionar três botões.
5 Adicionar res / lauout / arquivo de layout custom_view.xml, basta adicionar Para exibir os dados transmitidos pela intenção.
6 Modificar AndroidManifest.xml arquivo, adicione o <intent-filter> definição de regras destinadas a invocar atividades personalizadas.
7 Lançar emulador Android para executar o aplicativo e verificar os resultados das alterações feitas no aplicativo.

O seguinte é o conteúdo do 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);
    }
}

Aqui está o 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());
    }
}

Aqui está o conteúdo 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>

Aqui está o conteúdo de res / layout arquivo / 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>

Aqui está o conteúdo de res / valores / arquivo strings.xml:

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

Aqui está o conteúdo do arquivo 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 apenas executar algumas aplicações de filtro de intenção modificados. Presumo que você criou AVD durante o ambiente de instalação. Abra o projeto no arquivo ativo, clique na barra de ferramentas fotografia Ícone para executar o aplicativo no Android Studio. Estúdio Android instalar o aplicativo no AVD e inicia-lo. Se tudo correr bem, ele será exibido na janela do emulador da seguinte forma:

imagem

Clique no primeiro botão, "Usando Ver ação para iniciar o browser." Aqui nós definimos a nossa atividade personalizada contém "android.intent.action.VIEW", eo sistema Android tem sido definido para corresponder a ação padrão de exibição ativo para iniciar o navegador da Web, o Android exibe as seguintes opções para escolher o que você quer começar atividade:

imagem

Se você escolher um navegador, o Android vai lançar um navegador da Web e Web site www.uprogrammer.cn aberto. Se escolher a opção IntentDemo, Android vai começar CustomActivity, o evento não fazer nada, apenas capturar e exibir os dados passados ​​na TextView.

imagem

Agora, através do botão Voltar e clique em "ação Iniciar, iniciando Browser" botão, onde o Android aplicar filtros para selecionar as atividades definidas, e simplesmente começar as atividades personalizadas.

Mais uma vez usar o botão Voltar para voltar e clique no botão "condições excepcionais", tente encontrar um onde a intenção Android dada pelos filtros eficazes, mas não conseguiu encontrar uma definição de actividade eficaz. Porque nós usamos https em vez de dados HTTP, e dada a ação correta, uma vez Android gerar uma exceção. Como se segue:

imagem