Android | Неявные и явные намерения с примерами

Опубликовано: 5 Января, 2022

Предварительные условия:

  • Основы разработки приложений для Android для начинающих
  • Руководство по установке и настройке Android Studio
  • Android | Начиная с первого проекта приложения / Android
  • Android | Запуск вашего первого приложения для Android


В этой статье рассказывается о неявных и явных намерениях и о том, как их использовать в приложении для Android.

Что такое намерение в Android?

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

Некоторые из общих функций намерения:

  1. Начать обслуживание
  2. Запуск деятельности
  3. Показать веб-страницу
  4. Показать список контактов
  5. Трансляция сообщений

Методы и их описание

Методы Описание
Context.startActivity () Это делается для запуска нового действия или превращения существующего в действие.
Context.startService () Это запуск новой службы или предоставление инструкций для существующей службы.
Context.sendBroadcast () Это необходимо для доставки сообщения приемникам широковещательной передачи.

Классификация намерений
Есть два типа намерений

1. Неявное намерение
2. Явное намерение
  1. Неявное намерение: при использовании неявного намерения компонент не может быть указан. Действие, которое должно быть выполнено, объявляется неявным намерением. Затем операционная система 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

    <? xml version = "1.0" encoding = "utf-8" ?>
    < android.support.constraint.ConstraintLayout
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    tools:context = ".MainActivity" >
    <!-- add an edittext to input text -->
    < EditText
    android: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 -->
    < Button
    android: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

    package org.geeksforgeeks.implicitIntent_example;
    import android.app.Activity;
    import android.content.Intent;
    import android.net.Uri;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    public class MainActivity extends Activity {
    @Override
    protected void onCreate(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() method
    final EditText editText1 = (EditText)findViewById(R.id.editText1);
    Button button = (Button)findViewById(R.id.button1);
    // implementation of onClick event for Implicit Intent
    button.setOnClickListener( new View.OnClickListener() {
    @Override
    public void onClick(View v)
    {
    // performing webpage open action
    String url = editText1.getText().toString();
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
    startActivity(intent);
    }
    });
    }
    }

    Выход:

  2. Явное намерение: используя явное намерение, можно указать любой другой компонент. Другими словами, целевой компонент указан явным намерением. Таким образом, будет вызван только указанный целевой компонент.

    Например:

    Пример явного намерения

    В приведенном выше примере есть два действия (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

    <? xml version = "1.0" encoding = "utf-8" ?>
    < android.support.constraint.ConstraintLayout
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    tools:context = "org.geeksforgeeks.explicit_intent.MainActivity" >
    <!-- add a button to move to next activity -->
    < Button
    android: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 -->
    < TextView
    android: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

    package org.geeksforgeeks.explicit_intent;
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Intent;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    public class MainActivity extends Activity {
    // Defining the object for button
    Button button1;
    @Override
    public void onCreate(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() method
    button1 = (Button)findViewById(R.id.Button01);
    button1.setOnClickListener( new OnClickListener() {
    public void onClick(View view)
    {
    // Creating explicit intent
    Intent i = new Intent(getApplicationContext(),
    ActivityTwo. class );
    startActivity(i);
    }
    });
    }
    }

    activity_two.xml

    <? xml version = "1.0" encoding = "utf-8" ?>
    < android.support.constraint.ConstraintLayout
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    tools:context = "org.geeksforgeeks.explicit_intent.ActivityTwo" >
    <!-- add a button for moving to home activity -->
    < Button
    android: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 -->
    < TextView
    android: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

    package org.geeksforgeeks.explicit_intent;
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    public class ActivityTwo extends Activity {
    // Defining the object for button
    Button button1;
    @Override
    public void onCreate(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() method
    button1 = (Button)findViewById(R.id.Button01);
    button1.setOnClickListener( new OnClickListener() {
    public void onClick(View view)
    {
    // Creating explicit intent
    Intent i = new Intent(getApplicationContext(),
    MainActivity. class );
    startActivity(i);
    }
    });
    }
    }

    Выход:

Хотите более динамичную и конкурентную среду для изучения основ Android?
Щелкните здесь, чтобы перейти к уникальному руководству, составленному нашими экспертами с целью мгновенно подготовить вашу отрасль!