Использование встроенных возможностей Android

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

Intent-ы – это механизм, позволяющий Activity в Android взаимодействовать между собой и с системой. Давайте рассмотрим несколько наиболее распространенных типов Intent-ов и как их использовать. Все строки кода, указанные в этой статье, нужно прописывать внутри методов класса вашей Activity.

Отправить смс

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

Скриншот экрана телефона с приложением для отправки сообщений

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

Далее пользователь решает самостоятельно, стоит ли отправлять такой текст.

Позвонить

Чтобы открыть встроенный сервис звонков, напишите этот код:

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

Скриншот экрана телефона с приложением для звонков

Но что, если вы хотите позвонить напрямую? Выход есть. Но для этого придётся попросить у пользователя выдать разрешения приложению. В самой логике открытия Intent-а изменений будет немного: заменить Intent.ACTION_DIAL на Intent.ACTION_CALL.

Но в других частях изменений будет достаточно. Во-первых, нужно записать одну строчку в файл AndroidManifest.xml. Я выделю её – она позволит указать в базовом описании приложения, что ему может понадобиться разрешение на звонки. Откроем файл AndroidManifest.xml и внесём туда соответствующую строку:

Это ещё цветочки. В самой Activity (в коде на Java) нужно будет написать обработку случаев, когда разрешение выдано и не выдано, и если не выдано – просить разрешения. Вот какой у меня получился код в классе MainActivity, чтобы запросить и получить разрешение на звонки из Android-приложения:

Статическая переменная int PERMISSION_REQUEST_CODE нужна нам, чтобы определять, на тот ли запрос разрешений, который мы послали, был получен ответ. В данном случае можно установить ей любое значение, не только 1.

Скриншот экрана телефона с запросом на разрешение на совершение звонков

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

Скриншот экрана телефона с исходящим вызовом

Открыть URL

Из приложения Android можно открыть ссылку во встроенном браузере телефона без каких-либо разрешений. Это делается при помощи Intent-а с типом ACTION_VIEW.

При запуске приложения сразу же открывается браузер и осуществляется переход на указанный в коде сайт.

Браузер сам сможет отследить подозрительные сайты или те ресурсы, у которых не https, а http.

Поэтому разрешения тут также не нужны.

Скриншот экрана телефона с открытым сайтом в браузере

Поделиться в соцсетях

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

Скриншот экрана телефона с приложением для выбора социальной сети

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

Скриншот экрана телефона с открытым мессенджером

Карты

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

При запуске такого приложения открывается сервис карт и передвигается на нужное место с заданным “зумом”. Величина приближения варьируется от 0 до 23.

Скриншот экрана телефона с приложением карты

Камера

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

CAMERA_RESULT – это ваша собственная константа, чтобы идентифицировать результат после завершения начатой Activity с камерой. Она может быть равна 10, 20, 19654 и так далее. Выбирайте сами. Чтобы получить результат фотографирования, нужно переопределить метод onActivityResult():

Конкретно здесь идёт передача сделанной фотографии в ImageView в интерфейсе приложения. Обращение к графическому компоненту идёт через Java-код. Сделанную фотографию можно использовать по-разному. Можно отобразить её в приложении, сохранить на устройстве, поделиться в социальных сетях и так далее.

Скриншот экрана телефона с приложением камера

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

Распознать речь

Вы можете встроить в своё приложение сервис Speech To Text, чтобы распознавать речь и получать список вариантов, на какие слова сказанное пользователем было похоже. Здесь, как и в случае с камерой, необходимо запустить Activity с результатом выполнения, чтобы затем обработать то, что получится.

Обработать результат сказанного можно следующим кодом:

Все совпадения сохраняются в список ArrayList<String> matches. В итоге при запуске приложения отображается преобразователь устной речи в текст. Если сказать “Большой розовый пони”, то он, как сумеет, так распознает. Затем распознаватель выдаст несколько вариантов распознанных фраз.

Скриншот распознанного текста "небольшое ника розовый пони"

Скриншот распознанного текста "большой ника розовый пони"

Скриншот распознанного текста "небольшое не до розовый пони"
Скриншот экрана телефона с голосовым конвертером Google Speech Services

Контакты

Чтобы предоставить пользователю выбор контакта и получить результат выбора, нужно в первую очередь занести соответствующее разрешение в AndroidManifest.xml.

Затем нужно написать код запуска Intent-а, позволяющего открыть телефонную книгу, и запустить Activity с последующим результатом. SELECTION_RESULT – задаваемая лично вами константа. Она нужна, чтобы потом определить, к какому действию относится пришедший результат.

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

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

Почта

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

Скриншот экрана телефона с приложением для отправки почты

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

Скриншот экрана телефона с выбором приложения для отправки почты

Используя эти возможности Intent-ов, вы можете создавать богатые и функциональные приложения для Android. Они смогут взаимодействовать с различными аспектами устройства и операционной системы. Не нужно писать столько полезных функций своими ручками – они уже были созданы до вас. Используйте это с умом. Лучше тратьте время на разработку уникального функционала, пользуясь готовыми решениями для шаблонных функций.

Добавить комментарий