Реализация простого обмена данными. Кнопка “поделиться” в android приложении

 В этом уроке

Реализация эффективного и удобного действия “поделиться” в ActionBar стала еще проще с введением ActionProvider в Android 4.0 (API Уровень 14). ActionProvider, сразу после присоединения к пункту меню в панели действий, обрабатывает как внешний вид, так и поведение этого элемента. В случае ShareActionProvider, вы предоставляете интент “обмена” и он сделает все остальное.

Примечание: ShareActionProvider доступен начиная с Уровня API 14 и выше.

Реализация простого обмена данными. Кнопка "поделиться" в android приложении

Рисунок 1.ShareActionProvider в приложении Галерея.

[wpanchor id=”1″]

 

 

Обновление макета меню в android приложении


Чтобы начать работу с ShareActionProviders, определите android:actionProviderClass атрибут для соответствующего<item> в вашем ресурс меню файле:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
            android:id="@+id/menu_item_share"
            android:showAsAction="ifRoom"
            android:title="Share"
            android:actionProviderClass=
                "android.widget.ShareActionProvider"/>
    ...
</menu>

 

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

[wpanchor id=”2″]

 

 

Установка интента для обмена данными между android приложениями


Чтобы ShareActionProvider функционировал, необходимо предоставить интент для обмена. Этот интент должен быть таким же, как описано в уроке Отправка простых данных в другие приложения , с действием ACTION_SEND и дополнительными данными установленных с помощью EXTRA_TEXT и EXTRA_STREAM. Чтобы назначить интент обмена, сначала найдите соответствующий MenuItem в своем ресурсе меню в вашем Activity или Fragment. Далее, вызовите MenuItem.getActionProvider()для получения экземпляра ShareActionProvider. Используйте setShareIntent() для обновления интента обмена, связанного с этим элементом действия. Вот пример:

private ShareActionProvider mShareActionProvider;
...

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate menu resource file.
    getMenuInflater().inflate(R.menu.share_menu, menu);

    // Locate MenuItem with ShareActionProvider
    MenuItem item = menu.findItem(R.id.menu_item_share);

    // Fetch and store ShareActionProvider
    mShareActionProvider = (ShareActionProvider) item.getActionProvider();

    // Return true to display menu
    return true;
}

// Call to update the share intent
private void setShareIntent(Intent shareIntent) {
    if (mShareActionProvider != null) {
        mShareActionProvider.setShareIntent(shareIntent);
    }
}

 

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

Подробнее об объекте ShareActionProvider , см. Панель действий.

Далее: Настройка общего доступа android приложений к файлам

Додати коментар