Android | Неявные и явные намерения с примерами
Предварительные условия:
- Основы разработки приложений для Android для начинающих
- Руководство по установке и настройке Android Studio
- Android | Начиная с первого проекта приложения / Android
- Android | Запуск вашего первого приложения для Android
В этой статье рассказывается о неявных и явных намерениях и о том, как их использовать в приложении для Android.
Что такое намерение в Android?
Intent - это объект обмена сообщениями, который передается между такими компонентами, как службы, поставщики контента, действия и т. Д. Обычно метод startActivity () используется для вызова любого действия.
Некоторые из общих функций намерения:
- Начать обслуживание
- Запуск деятельности
- Показать веб-страницу
- Показать список контактов
- Трансляция сообщений
Методы и их описание
| Методы | Описание |
|---|---|
| Context.startActivity () | Это делается для запуска нового действия или превращения существующего в действие. |
| Context.startService () | Это запуск новой службы или предоставление инструкций для существующей службы. |
| Context.sendBroadcast () | Это необходимо для доставки сообщения приемникам широковещательной передачи. |
Классификация намерений
Есть два типа намерений
1. Неявное намерение 2. Явное намерение
- Неявное намерение: при использовании неявного намерения компонент не может быть указан. Действие, которое должно быть выполнено, объявляется неявным намерением. Затем операционная система Android отфильтрует компонент, который будет реагировать на действие.
Например
В приведенном выше примере компонент не указан, вместо этого выполняется действие, т.е. веб-страница будет открыта. По мере того, как вы вводите имя желаемой веб-страницы и нажимаете кнопку «ЩЕЛЧОК». Ваша веб-страница открыта.
Как создать приложение для Android для открытия веб-страницы с использованием неявного намерения (с примером)
- Шаг 1. Создайте файл XML и файл Java. Пожалуйста, ознакомьтесь с предварительными условиями, чтобы узнать больше об этом шаге.

- Шаг 2: Откройте файл «activity_main.xml» и добавьте следующие виджеты в макет ограничения.
1. EditText для ввода текста.
2. Кнопка для открытия веб-страницы.
Кроме того, назначьте идентификаторы для каждого компонента, как показано на изображении и в коде ниже. Назначенный идентификатор для компонента помогает идентифицировать компонент и может быть легко использован в файлах Java.
Синтаксис:android: id = "@ + id / id_name"
Вот данные идентификаторы: editText1 , button1
Это сделает пользовательский интерфейс приложения.
- Шаг 3: Теперь, после пользовательского интерфейса, этот шаг создаст серверную часть приложения. Для этого откройте файл MainActivity.java и создайте экземпляр компонента (Button), созданного в XML-файле, с помощью метода findViewById (). Этот метод связывает созданный объект с компонентами пользовательского интерфейса с помощью назначенного идентификатора.
Общий синтаксис:ComponentType object = (ComponentType)findViewById(R.id.IdOfTheComponent);
Синтаксис используемых компонентов (EditText, Button):
EditText editText = (EditText)findViewById(R.id.editText1);
Button button = (Button)findViewById(R.id.button1); - Шаг 4: Этот шаг включает настройку операций для отображения тост-сообщения. Эти операции заключаются в следующем:
а). Сначала добавьте кнопку прослушивания, и эта кнопка откроет веб-страницу.
button.setOnClickListener(new View.OnClickListener() {});б). Создайте переменную типа String для хранения значения EditText. Значение принимается и преобразуется в строку.
String url = editText1.getText().toString();
в). Создайте объект Intent класса MainActivity.java, чтобы открыть веб-страницу.
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
г). Метод startActivity () начинает вызывать веб-страницу для открытия, заданную намерением.
startActivity(intent);
Поэтому фрагмент кода для неявного намерения:
Строка url = editText1.getText (). ToString (); Намерение намерения = новое намерение (Intent.ACTION_VIEW, Uri.parse (url)); startActivity (намерение);
Полный код неявного намерения
activity_main.xml
<?xmlversion="1.0"encoding="utf-8"?><android.support.constraint.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><!-- add an edittext to input text --><EditTextandroid:id="@+id/editText1"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_alignParentTop="true"android:layout_centerHorizontal="true"android:layout_marginTop="136dp"android:ems="10"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"/><!-- add a button for click --><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@+id/editText1"android:layout_centerHorizontal="true"android:layout_marginTop="49dp"android:layout_marginEnd="132dp"android:text="Click"app:layout_constraintEnd_toEndOf="@+id/editText1"app:layout_constraintTop_toBottomOf="@+id/editText1"/></android.support.constraint.ConstraintLayout>MainActivity.java
packageorg.geeksforgeeks.implicitIntent_example;importandroid.app.Activity;importandroid.content.Intent;importandroid.net.Uri;importandroid.os.Bundle;importandroid.view.View;importandroid.widget.Button;importandroid.widget.EditText;publicclassMainActivityextendsActivity {@OverrideprotectedvoidonCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// Bind the components to their respective objects// by assigning their IDs// with the help of findViewById() methodfinalEditText editText1 = (EditText)findViewById(R.id.editText1);Button button = (Button)findViewById(R.id.button1);// implementation of onClick event for Implicit Intentbutton.setOnClickListener(newView.OnClickListener() {@OverridepublicvoidonClick(View v){// performing webpage open actionString url = editText1.getText().toString();Intent intent =newIntent(Intent.ACTION_VIEW, Uri.parse(url));startActivity(intent);}});}}Выход:

- Шаг 1. Создайте файл XML и файл Java. Пожалуйста, ознакомьтесь с предварительными условиями, чтобы узнать больше об этом шаге.
- Явное намерение: используя явное намерение, можно указать любой другой компонент. Другими словами, целевой компонент указан явным намерением. Таким образом, будет вызван только указанный целевой компонент.
Например:

Пример явного намерения
В приведенном выше примере есть два действия (FirstActivity, SecondActivity). Когда вы нажимаете кнопку «ПЕРЕЙТИ К ДРУГУЮ ДЕЯТЕЛЬНОСТЬ» в первом действии, вы переходите ко второму занятию. Когда вы нажимаете кнопку «ПЕРЕЙТИ К ДОМАШНЕМУ ЗАДАНИЮ» во втором занятии, вы переходите к первому занятию. Это делается с помощью явного намерения.
Как создать приложение для Android для перехода к следующему действию с использованием явного намерения (с примером)
- Шаг 1. Создайте файл XML и файл Java. Пожалуйста, ознакомьтесь с предварительными условиями, чтобы узнать больше об этом шаге.

- Шаг 2: Откройте файл «activity_main.xml» и добавьте следующие виджеты в макет ограничения.
1. Кнопка перехода ко второму действию.
2. TextView для написания текста.
Кроме того, назначьте идентификаторы для каждого компонента (Button, TextView), как показано на изображении и в коде ниже. Назначенный идентификатор для компонента помогает в идентификации компонента и может быть легко использован в файлах Java.
Синтаксис:android: id = "@ + id / id_name"
Вот данные идентификаторы: Button01 , TextView01 .
Это сделает пользовательский интерфейс приложения.
- Шаг 3: Теперь, после пользовательского интерфейса, этот шаг создаст серверную часть приложения. Для этого откройте файл MainActivity.java и создайте экземпляр компонента (Button, TextView), созданного в XML-файле, с помощью метода findViewById (). Этот метод привязывает созданный объект к компонентам пользовательского интерфейса с помощью назначенного идентификатора.
Общий синтаксис:
ComponentType object = (ComponentType)findViewById(R.id.IdOfTheComponent);
Синтаксис используемых компонентов (Button, TextView):
1. Button button = (Button)findViewById(R.id.Button01);
2. TextView textView = (TextView)findViewById(R.id.TextView01); - Шаг 4: Этот шаг включает настройку операций для создания явного намерения. Эти операции заключаются в следующем:
а. Сначала добавьте кнопку слушателя, и с помощью этой кнопки вы перейдете к другому действию.
button1.setOnClickListener(new View.OnClickListener() {});
б. Теперь создайте намерение.
Intent i = new Intent(getApplicationContext(), SecondActivityName.class);Параметры: имеет два параметра:
- getApplicationContext (): возвращает контекст для всего приложения.
- OtherActivityName.class: здесь следует использовать название вашей активности.
Поэтому код для явного намерения:
Intent i = новое намерение (getApplicationContext (), ActivityTwo.class);
c. Теперь начните целевую деятельность.
startActivity (i): запускает целевую активность.
Фрагмент кода для явного намерения:Intent i = новое намерение (getApplicationContext (), ActivityTwo.class); startActivity (я);
- Шаг 5: Теперь нам нужно создать второе действие в качестве целевого.
Шаги по созданию второго действия следующие:android project > File > new > Activity > Empty Activity

- Шаг 6: Теперь откройте второй XML-файл.
Добавьте Button и TextView для возврата к домашней активности и для написания текста об активности соответственно. Назначьте идентификатор кнопке и текстовому просмотру. Второе действие показано ниже:
- Шаг 7. Теперь откройте java-файл второго действия и выполните следующую операцию.
а. Сначала добавьте кнопку прослушивания, и с помощью этой кнопки вы перейдете к домашнему занятию.
button1.setOnClickListener(new View.OnClickListener() {});б. Теперь создайте намерение.
Intent i = new Intent(getApplicationContext(), OtherActivityName.class);Поэтому код для явного намерения:
Intent i = новое намерение (getApplicationContext (), MainActivity.class);c. Теперь начните целевую деятельность.
startActivity(i):This starts target activity.
Код для отображения тост-сообщения:
Intent i = new Intent(getApplicationContext(), MainActivity.class);
startActivity(i);- Шаг 8: Теперь запустите приложение и действуйте следующим образом:
Когда приложение открыто, оно отображает кнопку «ПЕРЕЙТИ К ДРУГИМ ДЕЙСТВИЯМ».
Нажмите кнопку «ПЕРЕЙТИ К ДРУГИМ ДЕЙСТВИЯМ».
Затем вы перейдете ко второму занятию.
Кроме того, вы получите кнопку «ПЕРЕЙТИ К ДОМАШНЕМУ ЗАДАНИЮ» во втором действии. Когда вы нажмете на нее, вы перейдете к домашнему занятию.
Полный код явного намерения
activity_main.xml
<?xmlversion="1.0"encoding="utf-8"?><android.support.constraint.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"tools:context="org.geeksforgeeks.explicit_intent.MainActivity"><!-- add a button to move to next activity --><Buttonandroid:id="@+id/Button01"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_below="@+id/TextView01"android:layout_marginTop="209dp"android:onClick="onClick"android:text="Go To Other Activity"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"tools:ignore="OnClick"/><!-- add a TextView to write some text on activity --><TextViewandroid:id="@+id/TextView01"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignLeft="@+id/Button01"android:layout_alignParentTop="true"android:layout_marginTop="44dp"android:minHeight="60dip"android:text="This is First Activity"android:textSize="20sp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"/></android.support.constraint.ConstraintLayout>MainActivity.java
packageorg.geeksforgeeks.explicit_intent;importandroid.os.Bundle;importandroid.app.Activity;importandroid.content.Intent;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;publicclassMainActivityextendsActivity {// Defining the object for buttonButton button1;@OverridepublicvoidonCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// Bind the components to their respective objects// by assigning their IDs// with the help of findViewById() methodbutton1 = (Button)findViewById(R.id.Button01);button1.setOnClickListener(newOnClickListener() {publicvoidonClick(View view){// Creating explicit intentIntent i =newIntent(getApplicationContext(),ActivityTwo.class);startActivity(i);}});}}activity_two.xml
<?xmlversion="1.0"encoding="utf-8"?><android.support.constraint.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"tools:context="org.geeksforgeeks.explicit_intent.ActivityTwo"><!-- add a button for moving to home activity --><Buttonandroid:id="@+id/Button01"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@+id/TextView01"android:layout_alignParentLeft="true"android:layout_marginBottom="220dp"android:onClick="onClick"android:text="Go to Home Activity"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.533"app:layout_constraintStart_toStartOf="parent"tools:ignore="OnClick"/><!-- add a TextView to write some text on activity --><TextViewandroid:id="@+id/TextView01"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignLeft="@+id/Button01"android:layout_alignParentTop="true"android:layout_margin="71dp"android:layout_marginTop="144dp"android:layout_marginEnd="88dp"android:layout_marginRight="88dp"android:minHeight="60dip"android:text="This is Second Activity"android:textSize="20sp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintTop_toTopOf="parent"/></android.support.constraint.ConstraintLayout>ActivityTwo.java
packageorg.geeksforgeeks.explicit_intent;importandroid.app.Activity;importandroid.content.Intent;importandroid.os.Bundle;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;publicclassActivityTwoextendsActivity {// Defining the object for buttonButton button1;@OverridepublicvoidonCreate(Bundle bundle){super.onCreate(bundle);setContentView(R.layout.activity_two);// Bind the components to their respective objects// by assigning their IDs// with the help of findViewById() methodbutton1 = (Button)findViewById(R.id.Button01);button1.setOnClickListener(newOnClickListener() {publicvoidonClick(View view){// Creating explicit intentIntent i =newIntent(getApplicationContext(),MainActivity.class);startActivity(i);}});}}Выход:

- Шаг 1. Создайте файл XML и файл Java. Пожалуйста, ознакомьтесь с предварительными условиями, чтобы узнать больше об этом шаге.