20 августа 2013 в 12:37

Android Intents Library

image

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

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

Для разных задач в интенте необходимо указывать различные action, category, type, extras. А так как этот код повторяется из приложения в приложение и чтобы каждый раз не искать информацию о нужном интенте на stackoverflow, я решил собрать такие интенты в библиотеку.


На данный момент в коллекции есть следующие интенты:
  • Share Text — расшарить текст
  • Send SMS — отправить смс (вашему приложение не нужны дополнительные пермишены)
  • Send Email — отправка электронной почты
  • Open Play Store — открыть страничку приложения в Play Store
  • Show Location — показать координаты на карте
  • Find Location — показать место или адрес на карте
  • Show Street View — открыть Google Street View
  • Show Location Settings — открыть экран системных настроек для включения/отключения GPS
  • Call Phone — открыть звонилку с телефонным номером
  • Dial Phone — набрать номер
  • Open Link — открыть ссылку в браузере
  • Open Audio — открыть файл в аудиоплеере
  • Open Video — открыть файл в видеоплеере
  • Open Image — открыть изображение
  • Open Text — открыть текстовый файл
  • Pick File — выбрать файл с файловой системы
  • Pick Contact — выбрать контакт из телефонной книги, учитывая версию API
  • Capture Photo — сделать фотку
  • Crop Image — обрезать фотку


image
Так же есть небольшая демка, которая демонстрирует работу с имеющимися интентами, которую можно скачать с Google Play.

Если у кого то есть мысли о том, каких интентов не хватает, что можно было бы улучшить или добавить — welcome!
Dmitriy Tarasov @TheDimasig
карма
20,0
рейтинг 0,0
Пользователь
Похожие публикации
Самое читаемое Разработка

Комментарии (16)

  • 0
    Еще есть OpenIntents — список интентов, которые поддерживают сторонние приложения. Проект перестал обновляться, но все еще представляет некоторый интерес:
    www.openintents.org/en/intentstable
    • 0
      Спасибо. Список большой, нужно будет покапаться
  • 0
    Рекомендую вместо названия IntentUtils ипсользовать Intents, если ещё не поздно =). Так проще и понятнее (такой подход используется, например, в Guava). Если отдаёте библиотеку в открытый доступ — не плохо бы покрыть её тестами (там чуть-чуть же).
    В целом, молодец, спасибо.
    • 0
      Над тестами думал, но не смог придумать что тестировать. Какие тесты с вашей точки зрения не помешали бы?
      • 0
        1. Хотя бы то, что параметры intent'а выставлены корректно
        2. Что невалидные данные не приводят к крешу (NPE)
        3. Robolectric'ом можно проверить запускаемость активитей
  • 0
    а к весу приложения много добавляет?
    • 0
      Библиотека состоит из одного класса, последняя версия весит 6.797 кб, плюс ProGuard должен обрезать не используемые методы. Так что конечный вес — не больше веса кода, который вы бы написали самостоятельно, без использования либы.
      • 0
        это радует)
  • +1
    PickImage?
    • 0
      Done, будет в релизе 1.20
  • 0
    Send SMS — отправить смс (вашему приложение не нужны дополнительные пермишены)


    Дополнительные, это, надеюсь, помимо прав на смс? Или даже без прав можно отправлять?
    • +2
      Не нужно вообще никаких пермишенов. Данный интент открывает стандартный диалог написания смс с заполненными полями. Чтобы смс ушло пользователь должен дополнительно нажать кнопку «Send». Пользователь может отредактировать текст или отменить отправку смс.
  • 0
    К слову, Intent «Crop Image» может бросить ActivityNotFoundException на устройствах с Sense, TouchWiz или другой оболочкой, т.к. это Intent приложения Галерея из «ванильного» Android.
    • 0
      Да, вы правы кроппинг доступен не везде. Но в принципе с любым из интентов не исключен такой вариант. На этот случай в библиотеке есть метод проверки, доступен ли интент в системе isIntentAvailable(Context context, Intent intent). Проверка возможности кроппинга немного отличается от стандартной, поэтому опять же предусмотрен метод isCropAvailable()
  • 0
    Может, знает кто…
    Нельзя ли с помощью intent'ов (или ещё как) делать sign in / sign out в Hangouts?
    Я бы хотел настроить это по расписанию в какой-нть Llama.
  • 0

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