Как активировать кнопку «Поделиться» в приложении для Android?

109

Я хочу добавить кнопку «Поделиться» в свое приложение для Android.

Как это

:

Я добавил кнопку «Поделиться», но она неактивна. Щелкаю, но ничего не происходит.

Мой код в MainActivity.java:

private ShareActionProvider mShareActionProvider;

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.share_menu, menu);
    getMenuInflater().inflate(R.menu.main, menu);
    MenuItem item = menu.findItem(R.id.share_menu);
    mShareActionProvider = (ShareActionProvider) menu.findItem(R.id.share_menu).getActionProvider();
    mShareActionProvider.setShareIntent(getDefaultShareIntent());

    return true;
}

{
    Intent sharingIntent = new Intent(Intent.ACTION_SEND);
    sharingIntent.setType("text/plain");
    sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Text");
    sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject");
    startActivity(Intent.createChooser(sharingIntent, "Share using"));
}

Я хочу поделиться текстом на моей первой вкладке (first_tab.xml) или второй вкладке (second_tab.xml).

Код во вкладке (xml) (при необходимости):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/background_color"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity$DummySectionFragment" >

<TextView
    android:id="@+id/section_label1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:text="@string/text"
    android:textColor="@color/text_color" />

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:src="@drawable/sprite" />

Личный Иисус
источник
5
Чтобы добавить такую ​​кнопку «Поделиться», вам нужно использовать ActionBar / ActionBarSherlock и добавить ShareProvider.
h4rd4r7c0r3

Ответы:

301

Добавьте Buttonи, щелкнув, Buttonдобавьте этот код:

Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND); 
sharingIntent.setType("text/plain");
String shareBody = "Here is the share content body";
sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject Here");
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
startActivity(Intent.createChooser(sharingIntent, "Share via"));

Полезные ссылки:

Для базового обмена

Для настройки

Басаварадж Хампали
источник
Добавить кнопку где? Я уже создал пункт меню со shareзначком на
панели
Здравствуйте! В приведенном выше методе отображается несколько приложений. Я хочу знать, какое приложение используется для совместного использования, и после завершения обмена мне нужно вызвать один API. Можно ли проверить, какое приложение использовалось, а также как вызвать API после совместного использования? Спасибо ...
patel135 06
Он был скопирован с code.tutsplus.com/tutorials/… .
CoolMind
У меня работает нормально, кроме Facebook. К сожалению, там ничего не показывает.
Evaggelos Manousakis
как добавить изображение? не могли бы вы предложить мне?
Таснува ошин
13

Создайте кнопку с общим идентификатором и добавьте следующий фрагмент кода.

share.setOnClickListener(new View.OnClickListener() {             
    @Override
    public void onClick(View v) {

        Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
        sharingIntent.setType("text/plain");
        String shareBody = "Your body here";
        String shareSub = "Your subject here";
        sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, shareSub);
        sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
        startActivity(Intent.createChooser(sharingIntent, "Share using"));
    }
});

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

Даниэль Ньямасё
источник
4

в котлине:

val sharingIntent = Intent(android.content.Intent.ACTION_SEND)
sharingIntent.type = "text/plain"
val shareBody = "Application Link : https://play.google.com/store/apps/details?id=${App.context.getPackageName()}"
sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "App link")
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody)
startActivity(Intent.createChooser(sharingIntent, "Share App Link Via :"))
mhKarami
источник