Latest web development tutorials

intento Android (Intent) e filtro (Filter)

intento Android è una descrizione astratta delle azioni da eseguire. Può essere avviato da una attività startActivity, broadcastIntent di inviare trasmissioni a qualsiasi componente ricevitore radio interessati, StartService (Intento) o bindService (Intent, ServiceConnection, int) per comunicare con i servizi di back-end.

Intenti stessa (un oggetto Intent) è una struttura di dati passiva che contiene la descrizione astratta di operazione da eseguire.

Ad esempio, si dispone di un attivo, aprire il client di posta elettronica e inviare una mail al vostro dispositivo Android. A tale scopo, è necessario inviare l'attività ACTION_SEND con un apposito selettore per processore intenzione Android. selettore specificato dato l'interfaccia appropriata per consentire all'utente di decidere come inviare i suoi dati del messaggio.

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

sintassi startActivity per chiamare i metodi di cui sopra per aprire l'attività di e-mail, i risultati dell'esecuzione del codice simile a questo:

immagine

Ad esempio, si dispone di un attivo, è necessario aprire un URL su dispositivi Android attraverso un browser. A questo scopo, invia il tuo evento ACTION_WEB_SEARCH intenzione di processori Android intenzione di aprire un determinato URL nel browser. intento Processor analizzando una serie di attività, e di scegliere il più adatto un'attività si intende, in questo caso, l'attività del browser Web. intento processore di trasmettere il vostro indirizzo della pagina web al browser Web, e aprire l'attività del browser Web.

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

L'esempio sopra troverà motore di ricerca "www.uprogrammer.cn" su Android, e dà risultati su un'attività parola chiave.

Per ogni componente - le attività, i servizi, riceventi per la radiodiffusione hanno meccanismo indipendente di trasmettere intenti.

No. Metodo e Descrizione
1 Context.startActivity (): l'intento passata al metodo utilizzato per avviare una nuova attività o hanno un'attività esistente per fare qualcosa di nuovo.
2 Context.startService (): l'intento passato al metodo, inizializzare un servizio, o di nuove informazioni per un servizio persistente.
3 Context.sendBroadcast (): l'intento passato al metodo, l'informazione sarà consegnato a tutti i riceventi per la radiodiffusione interessati.

oggetto Intent

oggetto Intent è un pacchetto di informazioni per il componente riceve intenzioni sistema Android riceve informazioni.

oggetto Intent include i seguenti componenti, a seconda di cosa si desidera comunicare o eseguire.

Azione (Azione)

È essere parte della intento dell'oggetto, è rappresentato come una stringa. Intento trasmissione, l'azione in caso, sarà segnalato. Azione determinerà in larga misura come è organizzato il resto d'intenti. classe Intent definisce una serie di azioni costanti corrispondenti a diverse intenzioni. Ecco l' intento azione standard Android lista.

oggetto Intent in movimento può essere impostata con il metodo setAction (), metodo con getAction () per leggere.

Data (dati)

Aggiungere i dati alle intenzioni delle specifiche del filtro. Questa specifica può essere un solo tipo di dati (come attributo di tipo di cellula), un URI, o includere entrambi i tipi di dati e URI. Con l'URI per specificare gli attributi di porzioni diverse.

Questi attributi specificano il formato dell'URL è facoltativo, ma anche indipendenti l'uno dall'altro -

  • Se l'intento non è specificata la modalità di filtro, tutte le altre proprietà URI viene ignorata.
  • Se non si specifica un host per il filtro, gli attributi di porta, e gli attributi di percorso vengono ignorati.

metodo SetData () può essere specificato solo dati URI, setType () può indicare solo il tipo di meta-dati, setDataAndType () può essere specificato tipi di URI e di elementi contemporaneamente. URI da getData () per leggere, tipo da getType () per leggere.

Ecco alcuni esempi di set di azioni / dati -

No. Azione / dati e una descrizione
1 contenuti ACTION_VIEW: // contatti / persone / 1: 1 vengono visualizzate le informazioni ID utente.
2 contenuti ACTION_DIAL: // contatti / persone / 1: dialer Show phone e popolare i dati degli utenti 1.
3 tel ACTION_VIEW: 123: Mostra il combinatore telefonico, e riempire il numero dato.
4 tel ACTION_DIAL: 123: Mostra il combinatore telefonico, e riempire il numero dato.
5 contenuti ACTION_EDIT: // contatti / persone / 1: modificare le informazioni ID utente 1.
6 contenuti ACTION_VIEW: // contatti / persone /: visualizzare un elenco di utenti per visualizzare.
7 ACTION_SET_WALLPAPER: Selezionare l'impostazione di visualizzazione dello sfondo.
8 ACTION_SYNC: sincronizzare i dati, valore di default: android.intent.action.SYNC
9 ACTION_SYSTEM_TUTORIAL: Piattaforma aperta definizione tutorial (o di default esercitazione inizio Tutorial)
10 ACTION_TIMEZONE_CHANGED: quando il fuso orario è cambiato notifica
11 ACTION_UNINSTALL_PACKAGE: si esegue il programma di disinstallazione di default

categoria

Categoria è una parte opzionale del intenti, è una stringa che contiene ulteriori informazioni sui tipi di componenti da intenzioni trasformati. Metodo AddCategory () con l'intenzione di aggiungere la categoria oggetto, metodo removeCategory () per rimuovere prima le categorie di aggiungere, GetCategories () Ottiene tutto pronto per le categorie di oggetti intenti. Ecco la categoria di serie intento Android lista.

È possibile visualizzare le seguenti sezioni filtri intento di capire come utilizziamo le categorie da una corrispondente volontà di scegliere le attività appropriate.

dati aggiuntivi

Questo viene passato al gruppo di affrontare con l'intento di chiave informazioni aggiuntive descritte nel presente documento. Scene di putExtras (), il metodo getExtras () per leggere. Ecco l' dati aggiuntivi standard di intenti Android lista.

contrassegno

Questi tag sono una parte opzionale del intenti, che indica il sistema Android come iniziare l'attività, come dopo l'inizio del trattamento.

No. Tag e descrizioni
1 FLAG_ACTIVITY_CLEAR_TASK: Se l'intento, e passando attraverso Context.startActivity, questo tag farà sì che tutti i compiti esistenti connessi con l'attività viene cancellato prima dell'inizio della manifestazione. Attività sarà la radice di un compito vuoto, tutta la vecchia attività è terminata. L'uso del marchio può essere combinato con FLAG_ACTIVITY_NEW_TASK.
2 FLAG_ACTIVITY_CLEAR_TOP: Se è impostato questo flag, l'evento sarà avviato nel compito che è attualmente in esecuzione. Questa malattia non avvia una nuova istanza di attività, tutte le attività viene spento, questa intenzione come nuovo intento è consegnato alle attività esistenti (attualmente in alto).
3 FLAG_ACTIVITY_NEW_TASK: Questo tag è generalmente utilizzato per tali attività in stile "starter" di comportamento: per fornire agli utenti una serie di dati possono essere completati in modo indipendente, e avviare una separata per bambini attività complete.

Nome componente

Nome Component Object è un campo rappresentante attività, servizi o ricevitore di trasmissione di classe opzionale. Se impostato, l'oggetto intento è passato a implementare un'istanza della classe progettato In caso contrario, Android altre intenzioni altre informazioni per individuare un bersaglio adatto. nome del componente da setComponent (), setClass () o setClassName () per impostare, () ottenere attraverso getComponent.


Tipo di intenti

Android supporta due tipi di intenzioni.

immagine

intento esplicito

Il mondo interiore di una esplicita intenzione di collegare l'applicazione, se è necessario collegare un'attività a un'altra attività, siamo in grado di dimostrare l'intenzione, la figura seguente mostra il collegamento facendo clic sul primo pulsante per l'attività la seconda attività.

immagine

L'intento di colpire componente per nome, generalmente utilizzato per la richiesta di informazioni interne - come ad esempio una attività o di attività sussidiaria per iniziare una iniziare una attività di pari livello. Ad esempio:

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

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

intento implicito

L'intento di questi obiettivi non il nome, il nome del componente di dominio è vuoto. intenti impliciti sono spesso utilizzati per attivare componenti di altre applicazioni. Ad esempio:

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

Il codice di cui sopra sarà dato i seguenti risultati:

immagine

componente di destinazione riceve l'intento, è possibile utilizzare il metodo getExtras () per ottenere dati supplementari trasmessi dal componente di origine. Ad esempio:

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

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

Esempi

L'esempio seguente dimostra l'uso dell'intenzione Android per lanciare una varietà di caratteristiche di Android applicazioni integrate.

passo descrizione
1 Utilizzando Android Studio IDE per creare un'applicazione Android, chiamato filtro Intent, pacchetto chiamato cn.uprogrammer.intentfilter. Quando si crea un progetto, in modo che l'SDK di destinazione e compilare con l'ultima versione del SDK Android usare API avanzate.
2 Modificare il file / cn.uprogrammer.intentfilter / MainActivity.java src e aggiungere il codice definisce due ascoltatori ai corrispondenti due pulsanti "Inizio Browser" e "Start chiamata"
3 Modifica res / layout / file di layout activity_main.xml, il layout in linea aggiungono tre pulsanti.
4 Avviare emulatore di Android per eseguire l'applicazione e verificare i risultati delle modifiche apportate all'applicazione.

Quanto segue è il contenuto del file 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);
    }
}

Ecco il contenuto della res / file di layout / 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>

Ecco il contenuto della res / valori / stringhe / XML, la definizione di due nuove costanti.

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

Quanto segue è il contenuto di default 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>

    </application>
</manifest>

Diciamo solo eseguire un modificati applicazioni del filtro intenti. Presumo che hai creato AVD durante l'ambiente di installazione. Aprire il progetto nel file attivo, fare clic sulla barra degli strumenti immagine Icona per eseguire l'applicazione in Android Studio. Android Studio installare l'applicazione sul AVD e lo avvia. Se tutto va bene, sarà visualizzata la finestra di emulazione come segue:

immagine

Ora fare clic sul pulsante "Start Browser", che lancerà un browser, a seconda della configurazione e visualizzare http://www.uprogrammer.cn come segue:

immagine

In modo simile, è possibile fare clic sul pulsante "Start chiamata" per aprire l'interfaccia del telefono, che vi permetterà di comporre numeri di telefono sono state date.


Filtri Intent

Avete visto come utilizzare l'intenzione di chiamare un'altra attività. sistema operativo Android utilizza filtri per specificare una serie di attività, servizi e riceventi per la radiodiffusione gestire intento, hanno bisogno l'aiuto di intenti specificato categoria di azione, il modello di dati. Utilizzare <intent-filter> elemento nel file manifesto elencati nelle corrispondenti azione, le categorie ei tipi di dati di attività, servizi e riceventi per la radiodiffusione.

L'esempio seguente mostra parte del file di AndroidManifest.xml specificato dalla azione di un cn.uprogrammer.intentfilter.CustomActivity attiva può impostare le categorie e le chiamate dati:

<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 l'attività è definita al di sopra del filtro, le altre attività è possibile utilizzare il seguente modo per richiamare questo evento. Utilizzare android.intent.action.VIEW, utilizzare l'azione cn.uprogrammer.intentfilter.LAUNCH e fornire categoria android.intent.category.DEFAULT.

Elemento specifica le attività per essere chiamato il tipo di dati previsto. Esempi di quanto sopra, l'attività personalizzata dati desiderati da "http: //" all'inizio.

Questo è il caso, attraverso il filtro, è destinato ad essere fornito a molteplici attività o servizi a cui l'utente sarà chiesto di iniziare il montaggio. Se non si trova il componente di destinazione, si verifica un'eccezione.

Prima di chiamare l'evento, una serie di test Controllo Android:

  • Filtro <intent-filter> necessario elencare una o più delle azioni, non può essere vuoto; comprendente almeno un filtro Elemento, altrimenti si bloccherà tutti gli effetti. Se sono menzionati più azioni, Android prima di chiamare un'azione per tentare di abbinare le attività ivi menzionati.
  • Filtro <intent-filter> 0 può essere elencato, una o più categorie. Se è menzionata nessuna categoria, Android attraverso questo test, se ci sono più categorie citate, si intende il tipo di test, la classificazione di ogni oggetto intenti deve corrispondere il filtro in una categoria.
  • ogni Elemento può specificare un URI e un tipo di dati (tipi di media Element). Ci sono proprietà separata, come ogni parte della URI: schema, host, la porta e il percorso. E il tipo di intenti include un URI, solo il tipo corrisponde a un certo tipo di tipi di dati di filtro quotata attraverso la sezione di prova.

Esempi

I seguenti esempi sono alcune modifiche degli esempi di cui sopra. Qui vedremo se un'intenzione definita per chiamare due eventi, Android come risolvere il conflitto, come utilizzare i filtri per richiamare un'attività personalizzata, se non vi è alcuna intenzione di definire le opportune attività sarà anormale.

passo spiegazione
1 Utilizzando Android Studio IDE per creare un'applicazione Android, chiamato filtro Intent, pacchetto chiamato cn.uprogrammer.intentfilter. Quando si crea un progetto, in modo che l'SDK di destinazione e compilare con l'ultima versione del SDK Android usare API avanzate.
2 Modificare il file src / cn.uprogrammer.intentfilter / MainActivity.java, aggiungere il codice per definire tre ascoltatori a tre pulsanti corrispondenti al layout definito nel documento.
3 Aggiungere file src / cn.uprogrammer.intentfilter / CustomActivity.java per includere un'attività che può essere un diverso chiamate intenzione.
4 Modifica res / layout / file di layout lineare activity_main.xml aggiungere tre pulsanti.
5 Aggiungi / / file di layout res lauout custom_view.xml, è sufficiente aggiungere Per visualizzare i dati trasmessi da intenti.
6 Modificare AndroidManifest.xml file, aggiungere il <intent-filter> definizione di norme volte a richiamare attività personalizzate.
7 Avviare emulatore di Android per eseguire l'applicazione e verificare i risultati delle modifiche apportate all'applicazione.

Quanto segue è il contenuto di src / cn.uprogrammer.intentfilter / MainActivity.java di:

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);
    }
}

Ecco cosa src / cn.uprogrammer.intentfilter / CustomActivity.java di:

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

Ecco il contenuto della res / layout / activity_main.xml di:

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

Ecco il contenuto della res / file di layout / 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>

Ecco il contenuto della res / valori file / strings.xml:

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

Ecco il contenuto del file 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>

Diciamo solo eseguire un modificati applicazioni del filtro intenti. Presumo che hai creato AVD durante l'ambiente di installazione. Aprire il progetto nel file attivo, fare clic sulla barra degli strumenti immagine Icona per eseguire l'applicazione in Android Studio. Android Studio installare l'applicazione sul AVD e lo avvia. Se tutto va bene, sarà visualizzata la finestra di emulazione come segue:

immagine

Fare clic sul primo pulsante, "Utilizzo View azione per avviare il browser." Qui definiamo la nostra attività personalizzata contiene "android.intent.action.VIEW", e il sistema Android è stato definito in modo da corrispondere alla azione predefinita vista attiva per avviare il browser Web, Android visualizza le seguenti opzioni per scegliere ciò che si desidera avviare attività:

immagine

Se si sceglie un browser, Android lancerà un browser Web e il sito www.uprogrammer.cn aperto. Se si sceglie l'opzione IntentDemo, Android inizierà CustomActivity, l'evento non ha fatto nulla, solo catturare e visualizzare i dati passati nel TextView.

immagine

Ora, attraverso il pulsante Indietro e fare clic su "azione Lanciare avviando browser" pulsante, dove Android applicare filtri per selezionare le attività definite, e semplicemente iniziare le attività personalizzate.

Anche in questo caso utilizzare il pulsante Indietro per tornare indietro e fare clic sul pulsante "condizioni eccezionali", cercare di trovare uno in cui Android intento dato dai filtri efficaci, ma non riusciva a trovare una definizione di attività efficaci. Perché usiamo https invece di dati HTTP, e dato l'azione corretta, una volta Android genera un'eccezione. Come segue:

immagine