Полезные примеры Android

Полезные примеры Android
Android — Intents и фильтры

Android Intent — это абстрактное описание операции, которую нужно выполнить. Его можно использовать с startActivity для запуска Activity, broadcastIntent для отправки его любым заинтересованным компонентам BroadcastReceiver и startService (Intent) или bindService (Intent, ServiceConnection, int) для связи с фоновой службой.

Само намерение, объект Intent, представляет собой пассивную структуру данных, содержащую абстрактное описание операции, которая должна быть выполнена.

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

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

Отправить электронное письмо

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

String q = "tutorialspoint";
Intent intent = new Intent(Intent.ACTION_WEB_SEARCH );
intent.putExtra(SearchManager.QUERY, q);
startActivity(intent);

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

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

Sr.No Метод и описание
1

Context.startActivity()

Объект Intent передается этому методу, чтобы запустить новое действие или заставить существующее действие сделать что-то новое.

2

Context.startService ()

Объект Intent передается этому методу для запуска службы или доставки новых инструкций действующей службе.

3

Context.sendBroadcast ()

Объект Intent передается этому методу для доставки сообщения всем заинтересованным получателям широковещательной рассылки.

Объекты Intent

Объект Intent — это набор информации, который используется компонентом, который получает намерение, а также информацию, используемую системой Android.

Объект Intent может содержать следующие компоненты в зависимости от того, что он передает или собирается выполнять:

Действие

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

Действие в объекте Intent может быть установлено методом setAction () и прочитано getAction ().

Данные

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

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

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

Метод setData () указывает данные только как URI, setType () указывает их только как тип MIME, а setDataAndType () определяет его как URI и как тип MIME. URI считывается getData (), а тип — getType ().

Некоторые примеры пар действие / данные:

Sr.No. Действие / пара данных и описание
1

ACTION_VIEW content://contacts/people/1

Вывести информацию о человеке с идентификатором «1».

2

ACTION_DIAL content://contacts/people/1

Отобразите телефонный номеронабиратель с указанным человеком.

3

ACTION_VIEW tel:123

Отобразите номеронабиратель телефона с заполненным заданным номером.

4

ACTION_DIAL tel:123

Отобразите номеронабиратель телефона с заполненным заданным номером.

5

ACTION_EDIT content://contacts/people/1

Отредактируйте информацию о человеке с идентификатором «1».

6

ACTION_VIEW content://contacts/people/

Отобразите список людей, которые может просматривать пользователь.

7

ACTION_SET_WALLPAPER

Показать настройки для выбора обоев

8

ACTION_SYNC

Данные будут синхронными, постоянное значение — android.intent.action.SYNC.

9

ACTION_SYSTEM_TUTORIAL

Он запустит учебник, определяемый платформой (учебное пособие по умолчанию или учебное пособие по запуску)

10

ACTION_TIMEZONE_CHANGED

Он указывает на изменение часового пояса

11

ACTION_UNINSTALL_PACKAGE

Он используется для запуска деинсталлятора по умолчанию

Категория

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

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

Дополнительно

Это будет пара ключ-значение для дополнительной информации, которая должна быть доставлена ​​компоненту, обрабатывающему намерение. Дополнительные параметры можно установить и прочитать с помощью методов putExtras () и getExtras () соответственно. Вот список стандартных дополнительных данных Android Intent.

Флаги

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

Sr.No Флаги и описание
1

FLAG_ACTIVITY_CLEAR_TASK

Если установлен в намерении, переданном в Context.startActivity (), этот флаг приведет к очистке любой существующей задачи, которая будет связана с действием, перед его запуском. То есть действие становится новым корнем пустой задачи, и все старые действия завершаются. Это можно использовать только вместе с FLAG_ACTIVITY_NEW_TASK.

2

FLAG_ACTIVITY_CLEAR_TOP

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

3

FLAG_ACTIVITY_NEW_TASK

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

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

Это необязательное поле является объектом Android ComponentName, представляющим класс Activity, Service или BroadcastReceiver. Если он установлен, объект Intent доставляется экземпляру назначенного класса, в противном случае Android использует другую информацию в объекте Intent для поиска подходящей цели.

Имя компонента устанавливается с помощью setComponent (), setClass () или setClassName () и читается с помощью getComponent ().

Типы намерений

Android поддерживает следующие два типа намерений.

Намерение

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

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

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

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

// Explicit Intent by specifying its class name
Intent i = new Intent(FirstActivity.this, SecondActivity.class);
// Starts TargetActivity
startActivity(i);

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

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

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

Приведенный выше код даст результат, как показано ниже

Намерение

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

// Get bundle object at appropriate place in your code
Bundle extras = getIntent().getExtras();
// Extract data using passed keys
String value1 = extras.getString("Key1");
String value2 = extras.getString("Key2");

пример

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

Шаг Описание
1 Вы будете использовать Android studio IDE для создания Android-приложения и назовите его My Application в пакете com.example.saira_000.myapplication .
2 Измените файл src / main / java / MainActivity.java и добавьте код для определения двух слушателей, соответствующих двум кнопкам, т.е. Запустите браузер и запустите телефон.
3 Измените XML-файл макета res / layout / activity_main.xml, чтобы добавить три кнопки в линейном макете.
4 Запустите приложение, чтобы запустить эмулятор Android и проверить результат изменений, внесенных в приложение.

Ниже приводится содержимое измененного файла основного действия src / com.example.My Application / MainActivity.java .

package com.example.saira_000.myapplication;
import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
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.example.com"));
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);
}
});
}
}

Ниже будет содержимое файла res / layout / activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<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="Intent Example"
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="Tutorials point"
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/abc"
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="Start Browser"
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="Start Phone"
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>

Ниже будет содержимое файла res / values ​​/ strings.xml для определения двух новых констант:

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

Ниже содержание по умолчанию AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.saira_000.myapplication">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

Попробуем запустить ваше приложение My Application . Я предполагаю, что вы создали свой AVD при настройке среды. Чтобы запустить приложение из Android Studio, откройте один из файлов активности вашего проекта и щелкните Значок запуска Eclipseзначок « Выполнить» на панели инструментов. Android Studio установит приложение на AVD и запустит его, и если с вашей установкой и приложением все в порядке, оно отобразит следующий эмулятор. окно —

Экран намерений Android

Теперь нажмите кнопку Start Browser , которая запустит настроенный браузер и отобразит http://www.example.com, как показано ниже —

Браузер Android Intent

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

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

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

Ниже приведен пример части файла AndroidManifest.xml для указания действия com.example.My Application.CustomActivity, которое может быть вызвано любым из двух упомянутых действий, одной категории и одним данными.

<activity android:name=".CustomActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="com.example.My Application.LAUNCH" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
</intent-filter>
</activity>

Как только это действие будет определено вместе с вышеупомянутыми фильтрами, другие действия смогут вызывать это действие с помощью либо android.intent.action.VIEW , либо действия com.example.My Application.LAUNCH при условии, что их категория — android.intent .category.DEFAULT .

Элемент <data> указывает тип данных, ожидаемый вызываемым действием, и для примера выше наша настраиваемая операция ожидает, что данные будут начинаться с «http: //»

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

Перед вызовом действия есть следующие тестовые проверки Android:

  • Фильтр <intent-filter> может перечислять более одного действия, как показано выше, но этот список не может быть пустым; фильтр должен содержать хотя бы один элемент <action>, иначе он заблокирует все намерения. Если упоминается более одного действия, Android пытается сопоставить одно из упомянутых действий перед вызовом действия.

  • Фильтр <intent-filter> может содержать ноль, одну или несколько категорий. если категория не указана, Android всегда проходит этот тест, но если упоминается более одной категории, то для намерения пройти тест категории каждая категория в объекте Intent должна соответствовать категории в фильтре.

  • Каждый элемент <data> может указывать URI и тип данных (тип мультимедиа MIME). Для каждой части URI существуют отдельные атрибуты, такие как схема, хост, порт и путь . Объект Intent, содержащий как URI, так и тип данных, передает часть теста типа данных, только если его тип соответствует типу, указанному в фильтре.

пример

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

Шаг Описание
1 Вы будете использовать студию Android, чтобы создать приложение Android и назовите его My Application в пакете com.example.tutorialspoint7.myapplication; .
2 Измените файл src / Main / Java / MainActivity.java и добавьте код для определения трех слушателей, соответствующих трем кнопкам, определенным в файле макета.
3 Добавьте новый файл src / Main / Java / CustomActivity.java, чтобы иметь одно настраиваемое действие, которое будет вызываться разными намерениями.
4 Измените XML-файл макета res / layout / activity_main.xml, чтобы добавить три кнопки в линейном макете.
5 Добавьте один XML-файл макета res / layout / custom_view.xml, чтобы добавить простой <TextView> для отображения переданных данных через намерение.
6 Измените AndroidManifest.xml, чтобы добавить <intent-filter>, чтобы определить правила для вашего намерения вызывать настраиваемое действие.
7 Запустите приложение, чтобы запустить эмулятор Android и проверить результат изменений, внесенных в приложение.

Ниже приводится содержимое измененного файла основной деятельности src / MainActivity.java .

package com.example.tutorialspoint7.myapplication;
import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
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.example.com"));
startActivity(i);
}
});
b2 = (Button)findViewById(R.id.button2);
b2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent("com.example.
tutorialspoint7.myapplication.
LAUNCH",Uri.parse("http://www.example.com"));
startActivity(i);
}
});
b3 = (Button)findViewById(R.id.button3);
b3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent("com.example.
My Application.LAUNCH",
Uri.parse("https://www.example.com"));
startActivity(i);
}
});
}
}

Ниже приводится содержимое измененного файла основного действия src / com.example.My Application / CustomActivity.java .

package com.example.tutorialspoint7.myapplication;
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.widget.TextView;
/**
* Created by TutorialsPoint7 on 8/23/2016.
*/
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());
}
}

Ниже будет содержимое файла res / layout / activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.tutorialspoint7.myapplication.MainActivity">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Intent Example"
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="Tutorials point"
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/abc"
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="Start Browser"
android:id="@+id/button"
android:layout_alignTop="@+id/editText"
android:layout_alignLeft="@+id/imageButton"
android:layout_alignStart="@+id/imageButton"
android:layout_alignEnd="@+id/imageButton" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Start browsing with launch action"
android:id="@+id/button2"
android:layout_below="@+id/button"
android:layout_alignLeft="@+id/button"
android:layout_alignStart="@+id/button"
android:layout_alignEnd="@+id/button" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Exceptional condition"
android:id="@+id/button3"
android:layout_below="@+id/button2"
android:layout_alignLeft="@+id/button2"
android:layout_alignStart="@+id/button2"
android:layout_toStartOf="@+id/editText"
android:layout_alignParentEnd="true" />
</RelativeLayout>

Ниже будет содержимое файла res / 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="match_parent"
android:layout_height="match_parent">
<TextView android:id="@+id/show_data"
android:layout_width="fill_parent"
android:layout_height="400dp"/>
</LinearLayout>

Ниже будет содержимое res/values/strings.xml для определения двух новых констант:

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

Ниже содержание по умолчанию AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.tutorialspoint7.myapplication">
<application
android:allowBackup = "true"
android:icon = "@mipmap/ic_launcher"
android:label = "@string/app_name"
android:supportsRtl = "true"
android:theme = "@style/AppTheme">
<activity android:name = ".MainActivity">
<intent-filter>
<action android:name = "android.intent.action.MAIN" />
<category android:name = "android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.example.tutorialspoint7.myapplication.CustomActivity">
<intent-filter>
<action android:name = "android.intent.action.VIEW" />
<action android:name = "com.example.tutorialspoint7.myapplication.LAUNCH" />
<category android:name = "android.intent.category.DEFAULT" />
<data android:scheme = "http" />
</intent-filter>
</activity>
</application>
</manifest>

Попробуем запустить ваше приложение My Application . Я предполагаю, что вы создали свой AVD при настройке среды. Чтобы запустить приложение из Android Studio, откройте один из файлов активности проекта и щелкните Значок запуска Eclipseзначок « Выполнить» на панели инструментов. Android Studio устанавливает приложение на ваш AVD и запускает его, и, если с вашей настройкой и приложением все в порядке, оно отобразит следующее окно эмулятора —

Пользовательское действие Android

Теперь начнем с первой кнопки «Запустить браузер с действием VIEW». Здесь мы определили наше настраиваемое действие с помощью фильтра «android.intent.action.VIEW», и уже существует одно действие по умолчанию против действия VIEW, определенного Android, которое запускает веб-браузер. Таким образом, Android отображает следующие два параметра для выбора действия, которое вы хочу запустить.

Android Two Activity

Теперь, если вы выберете Браузер, тогда Android запустит веб-браузер и откроет веб-сайт example.com, но если вы выберете опцию IndentDemo, тогда Android запустит CustomActivity, который ничего не делает, а просто захватывает переданные данные и отображается в текстовом виде следующим образом:

Пользовательские запуски действий Android

Теперь вернитесь с помощью кнопки «Назад» и нажмите кнопку «Запустить браузер с действием ЗАПУСК», здесь Android применяет фильтр для выбора определения действия и просто запускает ваше настраиваемое действие.

Опять же, вернитесь с помощью кнопки «Назад» и нажмите кнопку «Исключительное условие», здесь Android пытается найти действительный фильтр для данного намерения, но не находит действительного действия, определенного, потому что на этот раз мы использовали данные как https вместо http. хотя мы выполняем правильное действие, поэтому Android вызывает исключение и показывает следующий экран —

Экран исключения Android

Select the fields to be shown. Others will be hidden. Drag and drop to rearrange the order.
  • Image
  • SKU
  • Rating
  • Price
  • Stock
  • Availability
  • Add to cart
  • Description
  • Content
  • Weight
  • Dimensions
  • Additional information
  • Attributes
  • Custom attributes
  • Custom fields
Click outside to hide the compare bar
Compare