Статьи

Android SDK: реализовать намерение общего доступа

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

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


Если у вас уже есть приложение, с которым вы хотите поделиться, вы можете использовать его. Если нет, создайте новый проект в вашей Android IDE. В Eclipse выберите «Файл», «Новый», «Проект», затем «Проект Android». Заполните детали вашего проекта и нажмите «Готово». Детали вашего нового приложения появятся в рабочей области.

Создание нового проекта Android в Eclipse

Если у вас уже есть активность в приложении Android, с которой вы планируете запускать общий ресурс, откройте его в области редактора вашей среды IDE. В противном случае вы можете использовать основной класс для своего нового приложения или создать новый класс, сделав его «Деятельностью», чтобы можно было включить кнопку для запуска намерения совместного использования. Заставьте ваш класс расширить класс Activity и включите метод onCreate, в котором вы можете создавать элементы пользовательского интерфейса.


Вы можете запустить намерение совместного использования для любого пользовательского действия, такого как нажатие на опции или пункт контекстного меню. Следующий код Java создает кнопку с изображением внутри метода «onCreate» в Activity:

1
2
3
ImageButton sharingButton = new ImageButton(this);
sharingButton.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
sharingButton.setImageResource(R.drawable.sharing);

Это создает кнопку на основе класса Android ImageButton, который нужно будет импортировать в Activity. Этот код относится к изображению, сохраненному с именем файла «общий доступ», в котором хранится доступная для рисования папка ресурсов приложения. Вы можете использовать свое собственное изображение и изменить код, чтобы отразить его имя. Кроме того, вы можете создать стандартную кнопку с текстом, а не изображение.


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

1
2
3
4
5
sharingButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
shareIt();
}
});

Этот код указывает метод, который приложение должно вызывать, когда пользователи нажимают кнопку «Поделиться». Включив код в выделенный метод, вы можете вызывать функцию совместного использования из нескольких мест в вашем коде, например, из метода «onContextItemSelected» для длинных нажатий или «onOptionsItemSelected» для нажатий кнопок меню параметров.


Добавьте в метод Activity новый метод, соответствующий имени, указанному в методе прослушивателя кнопок, следующим образом:

1
2
3
private void shareIt() {
//sharing implementation here
}

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


Создайте намерение обмена. Добавьте следующий Java-код в ваш метод совместного использования, создав объект Intent с типом действия send:

1
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
Список опций, появляющийся при нажатии кнопки «Поделиться»

Установите тип MIME для контента, которым вы делитесь. Это определит, какие приложения список выбора представляет вашим пользователям. Обычный текст, HTML, изображения и видео являются одними из распространенных типов для обмена. Следующий код Java демонстрирует отправку простого текста:

1
sharingIntent.setType(«text/plain»);

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

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


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

1
String shareBody = «Here is the share content body»;

Конечно, вы можете создавать контент, используя переменные и методы в вашем приложении.

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

Прокрутка списка выбора для общего доступа к веб-странице

Передайте свой общий контент в метод «putExtra» класса Intent, используя следующий код Java:

1
2
sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, «Subject Here»);
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);

Этот код сначала добавляет тему к общему контенту, а затем добавляет текстовое тело, ссылаясь на строковую переменную.


Теперь, когда вы определили контент, которым вы хотите поделиться, когда пользователь нажимает кнопку «Поделиться», вы просто должны указать Android, чтобы пользователь мог выбрать свой способ обмена. Добавьте следующий код в ваш метод share:

1
startActivity(Intent.createChooser(sharingIntent, «Share via»));

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

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

Общий контент, переданный в приложение Gmail

Процесс реализации Намерения общего доступа в ваших приложениях Android не является сложным. Однако более сложной задачей является выбор контента для совместного использования таким образом, чтобы он соответствовал цели вашего приложения, при этом оставаясь удобным для пользователя. Например, вы не можете поделиться тем же контентом в текстовом сообщении или твите, который вы можете отправить по электронной почте. По этой причине лучше поддерживать общий доступ к общему контенту, чтобы эта функция была такой же эффективной для Twitter и Facebook, как и для Gmail и электронной почты.

Если вы хотите стать разработчиком для Android, ознакомьтесь с рядом полезных шаблонов приложений для Android на Envato Market. Там обязательно будет что-то, что может ускорить ваш следующий проект.