В этом уроке

При создании намерения необходимо указать действие, которое намерение «вызывает». Android определяет ряд действий, в том числе ACTION_SEND которое, как вы можете догадаться, указывает на то, что интент передает данные из одной активити в другую, даже через границы процессов. Для передачи данных в другую активити, все, что вам нужно сделать, это указать данные и их тип, система определит совместимые принимающие активити, и отобразит их пользователю (если есть несколько вариантов) или немедленно запустит активити (если есть только один вариант). Подобным образом, вы можете объявить типы данных, прием которых ваша активити поддерживает из других приложений, указав их в своем манифесте.

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

Примечание: Лучшим способом добавить элемент для обмена данными в ActionBar является использование ShareActionProvider, который стал доступен в уровне API 14. ShareActionProvider обсуждается в уроке Добавление простого обмена данными.

 

Отправка текстовых данных в android


Рисунок 1. Скриншот ACTION_SEND интента, открывшего диалог выбора на телефоне.

Самый простой и распространенный способ использования действия ACTION_SEND это отправка текстового содержимого из одной активити в другую. Например, встроенный браузер приложение может поделиться ссылкой, отображаемой в данный момент страницы, в виде текста с любым приложением. Это полезно для обмена статьей или сайтом с друзьями по электронной почте или через социальные сети. Вот код реализации такого обмена:

 

Если есть установленное приложение с фильтром, который соответствует ACTION_SEND и MIME типу text/plain, Android система выполнит его; если более одного приложения соответствует критериям, система выведет диалоговое окно для разрешения противоречий («диалог выбора»), которое позволяет пользователю выбрать приложение.

Тем не менее, если вы вызовите Intent.createChooser(), передав в него ваш Intent объект, он возвращает версию вашего интента, которое будет всегда отображать диалог выбора. Это имеет несколько преимуществ:

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

Вот обновленный код:

 

Появившийся диалог показан на рисунке 1.

Опционально, вы можете установить некоторые стандартные дополнительные параметры для интентов: EXTRA_EMAIL, EXTRA_CC, EXTRA_BCC, EXTRA_SUBJECT. Если принимающее приложение не предназначено для их использования, оно просто игнорирует их.

Примечание: Некоторые приложения электронной почты, такие как Gmail, ожидают String[] для дополнительных данных, таких, как EXTRA_EMAIL и EXTRA_CC, используйте putExtra(String, String[]) для их добавления к вашим интентам.

 

Отправка двоичных данных в android


Бинарные данные передаются с помощью действия ACTION_SEND в сочетании с установкой соответствующего типа MIME и размещения URI  в дополнительных данных с именем EXTRA_STREAM. Обычно это используется, чтобы поделиться изображением, но может использоваться для обмена любым типом двоичного содержимого:

 

Обратите внимание на следующее:

  • Вы можете использовать MIME тип "*/*", но это будет соответствовать только активити, которая в состоянии обрабатывать общие потоки данных.
  • Принимающему приложению необходимо разрешение на доступ к данным, на которые указывает Uri . Рекомендуемые способы сделать это:
    • Хранить данные в своём собственном ContentProvider, убедившись, что другие приложения имеют правильное разрешение на доступ к поставщику. Предпочитаемым механизмом обеспечения доступа является использование разрешения для URI , которые являются временными и предоставляют доступ только для принимающего приложения. Самый простой способ создать такой ContentProvider это использовать вспомогательный класс FileProvider .
    • Использовать системный MediaStore . Хотя MediaStore в первую очередь нацелен на видео, аудио и MIME типы изображений, однако начиная с Android 3.0 (Уровень API 11) он может хранить не только медиа типы (см. MediaStore.Files для получения дополнительной информации). Файлы можно вставить в MediaStore с помощью метода scanFile() , после которого content:// стиль Uri подходит для совместного использования, передаваемого в предоставленный метод обратного вызова onScanCompleted() . Следует отметить, что контент, добавленный один раз в системный MediaStore доступен любому приложению на устройстве.

 

Как отправить несколько единиц контента в android


Чтобы поделиться несколькими единицами контента, используйте действие ACTION_SEND_MULTIPLE вместе со списком URI, указывающих на содержание. Тип MIME варьируется в зависимости от сочетания контента, которым вы обмениваетесь. Например, если вы обмениваетесь 3-мя JPEG изображениями, тип по-прежнему "image/jpeg". При перемешивании типов изображений, он должнен быть "image/*" , чтобы соответствовать деятельности, которая обрабатывает любой тип изображений. Вы должны использовать "*/*" только если вы обмениваетесь широким спектром типов. Как отмечалось ранее, пора принимающему приложению анализировать и обрабатывать данные. Вот пример:

 

Как и прежде, убедитесь, что предоставленные URIs указывают на данные, к которым принимающее приложение может получить доступ.

Далее: Получение простых данных из других android приложений

Отправка простых данных в другие android приложения обновлено: Ноябрь 24, 2015 автором: admin

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*
*
Website