Latest web development tutorials

Android намерения (Intent) и фильтр (Filter)

Android намерения является абстрактное описание действий, которые будут выполняться. Он может быть запущен startActivity деятельности, broadcastIntent, чтобы отправить транслировать его любым заинтересованным компонентам радиоприемником, StartService (Intent) или bindService (Intent, ServiceConnection, INT) для связи с серверными услуг.

Сам (умысел объект) Намерение является пассивным структура данных, которая содержит абстрактное описание выполняемой операции.

Например, у вас есть активный, открыть почтовый клиент и отправить почту на Android устройства. Для этого вам нужно отправить ACTION_SEND активности с соответствующим селектором для процессора Android намерения. Указанный селектор дал соответствующий интерфейс, чтобы позволить пользователю решить, как отправить свои данные сообщения.

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 синтаксис вызова вышеописанных способов, чтобы открыть просмотр электронной почты, результаты выполнения кода выглядит следующим образом:

изображение

Например, у вас есть активный, вам необходимо открыть URL на Android устройств через браузер. Для этого отправьте событие ACTION_WEB_SEARCH намерение Android процессоров намерении открыть заданный URL в адресной строке браузера. Процессор намерение путем анализа ряда мероприятий, а также выбрать наиболее подходящий один вид деятельности вы намерены, в данном случае, веб-браузер деятельности. Процессор намерение передать свой веб-адрес страницы в веб-браузер и откройте деятельность веб-браузер.

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

Приведенный выше пример будет найти "www.uprogrammer.cn" поисковой системы на Android, и дает результаты на активности ключевых слов.

Для каждого компонента - деятельности, услуги, радиовещательных приемников имеют независимый механизм, чтобы передать намерение.

Нет. Метод и Описание
1 Context.startActivity (): намерение передается на метод, используемый, чтобы начать новую деятельность или иметь существующую деятельность, чтобы сделать что-то новое.
2 Context.startService (): намерение передается методу, инициализировать службу или новую информацию на постоянной службе.
3 Context.sendBroadcast (): намерение передается методу, информация будет передана всем заинтересованным получателям вещания.

Намерение объект

Намерение объект представляет собой пакет информации для компонента принимает намерения в Android система получает информацию.

Намерение объект включает в себя следующие компоненты, в зависимости от того, что вы хотите общаться или выполнить.

Действие (Action)

Это должно быть частью намерения объекта, он представляется в виде строки. Намерение вещания, действие в случае, будет сообщено. Действие во многом будет зависеть, как организован отдых намерения. Намерение класс определяет набор действий констант, соответствующих различным намерениям. Вот намерение стандартное действие Android список.

Намерение объект в движении может быть установлен с помощью метода SetAction (), метод по getAction () для чтения.

Данные (Data)

Добавление данных в пределах спецификаций фильтра. Эта спецификация может быть только один тип данных (например, атрибут типа ячейки), URI, или включать в себя оба типа данных и URI. По URI, чтобы указать атрибуты различных частей.

Эти атрибуты определяют формат URL не является обязательным, но и независимо друг от друга -

  • Если имеется в виду не указан режим фильтрации, все другое имущество URI игнорируется.
  • Если вы не укажете хост для фильтра, порта атрибуты и атрибуты пути игнорируются.

Метод УстановитьДанные () могут быть указаны только данные URI, SetType () может только указать тип метаданных, setDataAndType () может быть задан URI и элементов типов одновременно. URI по GetData () для чтения, типа по GetType () для чтения.

Вот некоторые примеры множества действий / данных -

Нет. Действие / данные и описание
1 Содержание ACTION_VIEW: // контакты / чел / 1: 1 отображается для идентификатора пользователя.
2 ACTION_DIAL содержание: // контакты / человек / 1: Показать телефон дозвона и заполнить пользовательские данные 1.
3 ACTION_VIEW тел: 123: Показать телефон дозвона, и заполнить данное число.
4 ACTION_DIAL тел: 123: Показать телефон дозвона, и заполнить данное число.
5 Содержание ACTION_EDIT: // контакты / чел / 1: Редактировать информацию 1 ID пользователя.
6 Содержание ACTION_VIEW: // контакты / чел /: отображение списка пользователей для просмотра.
7 ACTION_SET_WALLPAPER: Выберите установку обои дисплея.
8 ACTION_SYNC: синхронизация данных, значение по умолчанию: android.intent.action.SYNC
9 ACTION_SYSTEM_TUTORIAL: Открытая платформа определения учебник (или по умолчанию КУРС Учебное пособие)
10 ACTION_TIMEZONE_CHANGED: Когда часовой пояс изменен уведомление
11 ACTION_UNINSTALL_PACKAGE: вы запустите деинсталлятор по умолчанию

категория

Категория является необязательной частью намерения, является строкой, которая содержит дополнительную информацию о типах компонентов, подлежащих обработке намерения. Метод addCategory () с целью добавления категории объекта, метод removeCategory (), чтобы удалить перед добавлением категорий, getCategories () Получает весь набор умысла категорий объектов. Вот намерение стандартной категории Android список.

Вы можете просмотреть следующих разделах намерений фильтров, чтобы понять, как мы используем категории соответствующим намерением, чтобы выбрать соответствующие мероприятия.

дополнительные данные

Это передается на узел, чтобы иметь дело с намерением ключа дополнительной информации, описанной здесь. Задается putExtras (), метод getExtras () для чтения. Вот намерение стандарт дополнительные данные Android список.

Марк

Эти теги являются необязательной частью намерения, что указывает на Android системы, как начать свою деятельность, как после начала лечения.

Нет. Ключевые слова и описания
1 FLAG_ACTIVITY_CLEAR_TASK: Если имеется в виду, и, пройдя через Context.startActivity, этот тег будет вызывать все существующие задачи, связанные с деятельностью очищается до начала мероприятия. Деятельность будет корень пустой задачи, все старое деятельность прекращается. Использование метки могут быть объединены с FLAG_ACTIVITY_NEW_TASK.
2 FLAG_ACTIVITY_CLEAR_TOP: Если этот флаг установлен, то событие будет запущено в задаче, которая в настоящее время работает. Это заболевание не запускается новый экземпляр деятельности, вся деятельность на нем выключен, это намерение, как новое намерение доставляется к существующим (в настоящее время в верхней части) деятельности.
3 FLAG_ACTIVITY_NEW_TASK: Этот тег обычно используется для такой деятельности "стартер" стиль поведения: чтобы предоставить пользователям с пробегом данных могут быть завершены независимо друг от друга, и начать отдельный детский полный деятельности.

Название компонента

Компонент Название объекта поле не является обязательным представителем деятельности, услуг или радиовещательный приемник класса. Если установлено, то Намерение объект передается реализовать экземпляр класса разработан В противном случае, Android и другие намерения другую информацию, чтобы найти подходящую цель. Наименование компонента по setComponent (), setClass () или setClassName (), чтобы установить, () получить через GetComponent.


Тип намерения

Android поддерживает два типа намерений.

изображение

Явное намерение

Внутренний мир явного намерения подключить приложение, если вам нужно подключить деятельность на другой вид деятельности, мы можем показать намерение, на следующем рисунке показано соединение, нажав на кнопку первой активности на второй активности.

изображение

Цель ориентации компонента по имени, как правило, используется для применения внутренней информации - такой как вспомогательная деятельность или деятельность, чтобы начать начать сиблингом деятельность. Например:

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

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

Неявные намерения

Цель этих целей не имя, имя компонента домена пустым. Неявные намерения часто используются для активации компонентов других приложений. Например:

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

Приведенный выше код будет дан следующие результаты:

изображение

Целевой компонент принимает намерение, вы можете использовать метод getExtras () для получения дополнительных данных, передаваемых по компоненту источника. Например:

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

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

примеров

Следующий пример демонстрирует использование Android намерении запустить множество Android функций встроенных приложений.

шаг описание
1 Использование Android Studio IDE для создания приложения для Android, названный Намерение фильтр, пакет с именем cn.uprogrammer.intentfilter. При создании проекта, убедитесь, что целевой SDK и компиляции с последней версией Android SDK использовать расширенный API.
2 Изменить файл исходного кода / cn.uprogrammer.intentfilter / MainActivity.java и добавить код определяет два слушателей соответствующих двух кнопок "Пуск Browser" и "Запуск вызова"
3 Изменение разрешения / макет / activity_main.xml файлы разметки, онлайн макет добавить три кнопки.
4 Запуск Android эмулятор для запуска приложения и проверить результаты изменений, внесенных в приложение.

Ниже приводится содержание 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);
    }
}

Вот содержание Рез / файла макета / 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>

Вот содержание Рез / значений / строк / XML, определения двух новых констант.

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

Ниже приводится содержание 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>

Давайте просто запустить модифицированные Intent приложения фильтра. Я предполагаю, что вы создали AVD во время установки среды. Откройте свой проект в активном файле, нажмите на панели инструментов изображение Иконка для запуска приложения в Android Studio. Android-студия установить приложение на AVD и запускает его. Если все пойдет хорошо, он будет отображаться в окне эмулятора выглядит следующим образом:

изображение

Теперь нажмите на кнопку "Start Browser", который будет запущен браузер, в зависимости от конфигурации и отображения http://www.uprogrammer.cn следующим образом:

изображение

Аналогичным образом, вы можете нажать на кнопку "Start" Вызов, чтобы открыть интерфейс телефона, который позволит Вам набрать номера телефонов были даны.


Намерение Фильтры

Вы видели, как использовать намерение вызвать другую деятельность. Android операционная система использует фильтры, чтобы указать диапазон деятельности, услуг и вещательные приемники обращаться намерения, нуждаются в помощи намерения указанной категории действий, шаблон данных. Используйте <намеренных фильтр> элемент в файле манифеста, перечисленных в соответствующих действий, категорий и типов данных в деятельности, услуг и радиовещательных приемников.

В следующем примере показана часть AndroidManifest.xml файла, указанного действием активного cn.uprogrammer.intentfilter.CustomActivity можно установить категории и вызовы для передачи данных:

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

Когда активность определяется над фильтром, другие действия, которые вы можете использовать следующий способ вызвать это событие. Используйте android.intent.action.VIEW, используйте действие cn.uprogrammer.intentfilter.LAUNCH и обеспечивают категорию android.intent.category.DEFAULT.

Элемент определяет мероприятия, которые можно назвать ожидаемый тип данных. Примеры выше, пользовательские активности нужные данные из "HTTP: //" в начале.

Это тот случай, через фильтр, он предназначен для доставки к нескольким деятельности или услуг, к которым пользователь будет предложено начать сборку. Если вы не можете найти целевой компонент, происходит исключение.

Перед вызовом события, серия Android Check теста:

  • Фильтр <намеренных фильтр> нужно перечислить один или несколько действий, не может быть пустым, содержащий, по меньшей мере, один фильтр Элемент, в противном случае он будет блокировать все намерения. Если несколько действий упоминаются, Android перед вызовом действия, чтобы попытаться соответствовать деятельности, указанной в нем.
  • Фильтр <намеренных фильтр> 0 может быть в списке, одну или несколько категорий. Если ни одна категория не упоминается, Android через это испытание, если есть несколько категорий, упомянутых, он предназначен типом теста, классификация каждого объекта Intent должен соответствовать фильтр в категории.
  • каждый Элемент может указать URI и тип данных (типы медиа-элемента). Есть отдельная собственность, так как каждая часть URI: схема, хост, порт и путь. И тип намерения включает в себя URI, только его тип соответствует определенный тип фильтра перечисленных типов данных с помощью испытательной секции.

примеров

Следующие примеры приведены некоторые модификации приведенных выше примеров. Здесь мы увидим, если определенное намерение вызвать два события, Android, как разрешить конфликт, как использовать фильтры для вызова пользовательской активности, если нет намерения определить соответствующие мероприятия будут ненормальными.

шаг объяснение
1 Использование Android Studio IDE для создания приложения для Android, названный Намерение фильтр, пакет с именем cn.uprogrammer.intentfilter. При создании проекта, убедитесь, что целевой SDK и компиляции с последней версией Android SDK использовать расширенный API.
2 Изменить файл SRC / cn.uprogrammer.intentfilter / MainActivity.java, добавить код для определения трех слушателей трех кнопок, соответствующих макете, определенной в документе.
3 Добавить файл SRC / cn.uprogrammer.intentfilter / CustomActivity.java включать деятельность, которая может быть различные вызовы намерения.
4 Изменение разрешения / макет / activity_main.xml линейный файл макета добавить три кнопки.
5 Добавить RES / lauout / файл custom_view.xml макета, просто добавьте Чтобы отобразить данные, переданные намерения.
6 Изменить AndroidManifest.xml файл, добавьте <намеренных Filter> определение правил, предназначенных для вызова пользовательских действий.
7 Запуск Android эмулятор для запуска приложения и проверить результаты изменений, внесенных в приложение.

Ниже приводится содержание 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,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);
    }
}

Вот что SRC / cn.uprogrammer.intentfilter / CustomActivity.java из:

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

Вот содержание Рез / макет / 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="通过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>

Вот содержание Рез / файла макета / 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>

Вот содержание Рез / значений / файла strings.xml:

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

Вот содержание 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>

Давайте просто запустить модифицированные Intent приложения фильтра. Я предполагаю, что вы создали AVD во время установки среды. Откройте свой проект в активном файле, нажмите на панели инструментов изображение Иконка для запуска приложения в Android Studio. Android-студия установить приложение на AVD и запускает его. Если все пойдет хорошо, он будет отображаться в окне эмулятора выглядит следующим образом:

изображение

Нажмите на первой кнопке "Использование вида действия, чтобы запустить браузер." Здесь мы определяем наш обычай деятельности содержит "android.intent.action.VIEW", а Android система была определена, чтобы соответствовать по умолчанию активным VIEW действия клавишу для запуска веб-браузера, Android отображает следующие параметры, чтобы выбрать то, что вы хотите, чтобы начать Вид деятельности:

изображение

Если вы выбираете браузер, Android запустит веб-браузер и открыть веб-сайт www.uprogrammer.cn. Если вы выбрали опцию IntentDemo, Android начнет CustomActivity, событие ничего не делали, просто захватить и отобразить данные, передаваемые в TextView.

изображение

Теперь, с помощью кнопки Назад и нажмите кнопку "Запустить действие, запустив браузер" кнопку, где Android применять фильтры для выбора определенных видов деятельности, а просто начать собственные действия.

Снова используйте кнопку назад, чтобы вернуться назад и нажмите на кнопку "исключительные условия", попытаться найти тот, где Android намерения дается эффективных фильтров, но не смог найти определение эффективной деятельности. Поскольку мы используем протокол HTTPS вместо данных HTTP, а также учитывая правильное действие, как только Android генерирует исключение. Как следует:

изображение