УДК: 004.4'2
Мевлют И. Ш.
студент гр. И-1-12,
ГБОУВО РК «Крымский инженерно-педагогический университет»
Абляев М. Р.
студент гр. И-1-12,
ГБОУВО РК «Крымский инженерно-педагогический университет»
Ворожейкин Р. В.
студент гр. И-1-12,
ГБОУВО РК «Крымский инженерно-педагогический университет»
Научный руководитель: Адильшаева Э. И.
ГБОУВО РК «Крымский инженерно-педагогический университет»
ПРЕИМУЩЕСТВА ИСПОЛЬЗОВАНИЯ МЕХАНИЗМА НАМЕРЕНИЙ INTENT
В работе описан механизм намерений Intent. Рассмотрены принципы работы явного и неявного намерений, и другие возможности. Приведены базовые примеры работы с данным механизмом. В заключении описаны преимущества использования данного механизма операционной системы Android.
Ключевые слова: Intent, Google, Android, намерение.
Начав изучать программирование приложений под операционную систему Android, разработчик попадает в ситуацию, когда знаний еще недостаточно, а идея создать интересное красивое приложение уже родилась. В этот момент от разработчика требуется терпение для поддерживания желания дальнейшей работы. На сегодняшний день лучше изучать программирование под платформу Android на готовых примерах с открытым исходным кодом.
После освоения работы с XML файлами, то есть научившись проектировать графический пользовательский интерфейс, можно перейти к изучению механизма в системе Android, который уже на ранних стадиях разработки мобильных приложений позволит создавать интересные и красивые приложения. Этот механизм получил называется Intent (намерения).
На официальном сайте Google по разработке мобильных приложений под операционную систему Android приводится описание данного механизма и процесса работы с ним. Также приводятся примеры вариантов использования данного механизма. Подробно объясняется, в каких случаях стоит его использовать. Приводится краткая информация о том, как обращаться с помощью Intent к другим приложениям или к их отдельным функциям [1].
В главе «Намерения и широковещательные приемники», популярной книги Рето Майера [2], можно узнать о наиболее уникальной и важной концепции при разработке под Android, Intent. Приводится и информация об использовании данного механизма для обмена данными в рамках одного или нескольких приложений, а также для об использовании его для обнаружения изменений в состоянии системы.
С помощью Intent можно узнать, как определять явные и неявные намерения для запуска активностей и сервисов, используя так называемое ленивое связывание. С помощью неявных намерений можно запрашивать выполнение определенных действий с данными, позволяя Android решать, какие программные элементы лучше всего подходят требованиям разработчика.
Широковещательные Intent используются для оповещения о событиях в рамках всей системы. Из главы также можно узнать, каким образом их можно передавать и принимать, используя приемники широковещательных намерений.
Интерес представляет и статья «Некоторые возможности использования Intent^» [3]. Статья выделяется среди других быстрым введением в курс по данной теме. Информация сопровождается понятными примерами. В данной статье можно найти часто используемые решения: как с помощью Intent совершить звонок, отправить смс, открыть ссылку в браузере, раздать контент, написать письмо и многое другое.
Целью данной статьи является описание удобства и возможности использования механизма системы Android «намерения» и причины важности его изучения на ранних стадиях курса Android Developer.
Начинающим разработчикам инструмент Intent в Android программировании даст возможность создавать простые и интересные мобильные приложения.
Для начала стоит разобраться, что такое Intent. По запросу перевести слово Intent, Google переводчик выдает следующий результат: «Intent — это умысел, намерение, цель». Проводя параллель с программированием, можно сделать вывод, что данный механизм отвечает за какое-то действие, намерение что-то выполнить, например, передать данные другому приложению, открыть браузер и т. п. На официальном сайте по разработке мобильных приложений под Android от Google приведено следующее определение: «Intent представляет собой объект обмена сообщениями, с помощью которого можно запросить выполнение действия у компонента другого приложения».
Самый частый вариант использования Intent^ — это переход от одной активности к другой. После изучения этого базового способа использования данного механизма, изучение остальных не составит труда. Принцип работы выглядит следующим образом (рисунок 1):
Рисунок 1 — Принцип работы явного намерения
Намерения различают как явные и как неявные (имеется в виду указания). На рисунке 1 приведен пример явного указания, то есть конкретного указания класса. В конструкцию Intent передаются параметры контекста, например, this, и целевой класс. Код может быть следующим:
Intent Intent = new Intent (HelloWorld.this, AboutActivity.class);
startActivity (Intent);
В примере указывается, откуда вызывается метод и какое действие требуется выполнить. Пример показывает переход от одного класса к другому.
В данном случае HelloWorld.this — это то место, откуда будет совершаться вызов (переход), а AboutActivity.class — это тот класс, который будет запущен. Данный пример наглядно показывает общий принцип работы намерений. Он заключается в следующем: создав намерение, система Android совершит поиск по Intent фильтрам. В том случае, если найдется класс, который сможет выполнить переданную операцию, он будет запущен. Также
пример показывает насколько важно объявлять все классы в файле манифеста, AndroidManifest.xml.
Помимо явного, существует неявный метод использования механизма намерения, то есть без конкретного указания класса. Например, указание адреса на интернет ресурс. Пример работы рассмотрен ниже (рисунок 2):
Intent
startActivityO
Activity А
Рисунок 2 — Принцип работы неявного намерения
Суть неявного указания операции заключается в том, что используется не имя класса, а указываются параметры с определенными значениями. Так, например, заменив HelloWorld.this на Intent.ACTION_VIEW и указав через запятую значение http://examle.ru, можно вызвать браузер с открытием веб-страницы с указанным адресом. Полный пример кода приведен ниже:
Uri address = Uri.parse("http://examle.ru ");
Intent openlinkIntent = new Intent(Intent.ACTION_VIEW, address);
startActivity(openlinkIntent);
В данном примере, параметр ACTION_VIEW указывает на то, что разработчик намеревается что-то просмотреть. ACTION — действие или операция, а VIEW — представление, то есть операция (действие) на просмотр чего-либо.
В этом случае механизм работы будет состоять из трех этапов. Сначала создается конструкция Intent, заполняется нужными параметрами и далее передается в обработчик startActivity(). Затем система, приняв намерение, начинает поиск всех Intent фильтров, которые ранее оповестили систему, что они способны обработать данный параметр, то есть соответствующий объекту Intent. Далее, если система нашла подходящее приложение, а их может быть несколько, она запускает операцию для обработки, передав объект Intent.
Переход от одной активности к другой -это не все то, на что способен механизм Intent. С помощью механизма намерений также возможны следующие действия:
1) совершение звонков, пример кода:
Intent dialIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + "123456789")); startActivity(dialIntent);
Стоит обратить внимание на то, что подобные действия требуют разрешение. В файле манифеста AndroidManifest.xml требуется установить разрешение на совершение приложением звонков:
<uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android.permission.CALL_PRIVILEGED" /> Данный код сработает следующим образом: система найдет приложение, которое может обработать объект. В данном случае это стандартное приложение для звонков, или Skype, или некое другое приложение, позволяющее совершать звонки. Затем система откроет это приложение с уже набранным номером, однако звонок не будет запущен автоматически, а только после нажатия на клавишу вызова самим пользователем.
2) отправка смс сообщения, пример кода: Intent smsIntent = new Intent(Intent.ACTION_VIEW);
smsIntent.setType("vnd.android-dir/mms-sms");
smsIntent.putExtra("sms_body", "Some SMS text");
startActivity(smsIntent);
Данный пример кода не отвечает за отправку смс сообщения напрямую, а только запускает приложение, которое способно это совершить. Поэтому разрешение в файле манифеста указывать не нужно.
3) открытие ссылки в браузере, пример кода.
Intent browseIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));
startActivity(browseIntent);
Данный пример кода откроет страницу в браузере с указанной ссылкой. Если у пользователя установлено несколько браузеров, то система предложит выбрать один из них. Например, ссылки YouTube будет удобнее открывать через официальное приложение от YouTube.
В заключении стоит отметить, что в работе приведены лишь некоторые наиболее часто используемые возможности данного механизма. Следующие действия также несложно выполнить: открыть карту с указанными координатами, отправить письмо, посмотреть номер в контактной книжке, сделать снимок с камеры, позвонить на Skype и передать данные с одной активности и еще многое другое. Подробную информацию и примеры можно найти, используя электронные ресурсы для разработчиков.
Механизм намерений дает большие возможности, позволяет разработчику сэкономить много времени на создание приложения, а у начинающего вызывает большой интерес к разработке собственного приложения. Использование намерений позволяет сделать интересные, красивые и многоэкранные приложения.
Литература
1. Объекты Intent и фильтры объектов Intent [Электронный ресурс] // Официальный сайт разработки мобильных приложений под Android. — 2016. — Режим доступа: https://developer.android.com/guide/ components/Intents-filters.html#Building.
2. Майер, Р. Android 4. Программирование приложений для планшетных компьютеров и смартфонов / Рето Майер. — М: Эскмо, 2013. — 816 с.
3. Терменжи, А. Некоторые возможности использования Intent^ [Электронный ресурс] / Артур Терменжи // Информационный IT портал habrahabr.ru. — 2 ноября 2011 г. — Режим доступа: https://habrahabr.ru/post/131041/.