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

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

Изменение файла манифеста

Фильтры намерений информируют систему о том, какие типы намерений может принять приложение. Также, как вы создавали намерения с действием ACTION_SEND в предыдущем уроке, вы можете создавать фильтры, чтобы получать намерения от других явлений. Для объявления фильтров в файле манифеста используется элемент <intent-filter>. Например, если ваше приложение может получать и обрабатывать текстовые данные, картинки или другие типы данных, манифест может выглядеть таким образом:

Примечание: подробная информацию о намерениях и фильтрах находится в разделе Намерения и фильтры.

Если другое приложение пытается передать любые из описанных данных, создав намерение и передав его в startActivity(), ваше приложение может быть выбрано в окне диалога. Если пользователь выберет ваше приложение, соответствующее явление (в примере выше .ui.MyActivity) будет запущено и вы сможете обработать данные с помощью вашего кода.

Обработка входящих данных

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

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

Обработка данных может быть простой, вроде вставки текста в поле ввода, или более сложной, например наложение фильтров на изображение. Что приложение будет делать с данными, зависит только от вас!

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