Jak aktywować przycisk „Udostępnij” w aplikacji na Androida?

109

Chcę dodać przycisk „Udostępnij” do mojej aplikacji na Androida.

Tak

:

Dodałem przycisk „Udostępnij”, ale przycisk nie jest aktywny. Klikam, ale nic się nie dzieje.

Mój kod w 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"));
}

Chcę udostępnić tekst na mojej pierwszej karcie (first_tab.xml) lub drugiej karcie (second_tab.xml).

Kod na karcie (xml) (w razie potrzeby):

<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" />

Osobisty Jezus
źródło
5
Aby dodać ten rodzaj przycisku Udostępnij, musisz użyć ActionBar / ActionBarSherlock i dodać ShareProvider.
h4rd4r7c0r3

Odpowiedzi:

301

Dodaj Buttoni po kliknięciu Buttondodaj ten kod:

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"));

Przydatne linki:

Do podstawowego udostępniania

Do personalizacji

Basavaraj Hampali
źródło
Dodaj przycisk gdzie? Utworzyłem już element menu z shareikoną na moim pasku akcji
Si8
Witam, W powyższej metodzie wydaje się, że wyświetla wiele aplikacji. Chcę wiedzieć, która aplikacja jest używana do udostępniania i po zakończeniu udostępniania muszę wywołać jedno API. Czy można sprawdzić, z jakiej aplikacji korzystała, a także jak wywołać API po udostępnieniu? Dziękuję ...
patel135
Został skopiowany z code.tutsplus.com/tutorials/… .
CoolMind
Dla mnie działa dobrze, z wyjątkiem Facebooka. Niestety nic tam nie pokazuje.
Evaggelos Manousakis
jak dodać obraz? czy możesz mi zasugerować?
Tasnuva oshin
13

Utwórz przycisk z udziałem identyfikatora i dodaj następujący fragment kodu.

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"));
    }
});

Powyższy fragment kodu otworzy selektor udostępniania po kliknięciu przycisku udostępniania. Jednak uwaga ... Fragment kodu udostępniania może nie dawać bardzo dobrych wyników przy użyciu emulatora. Aby uzyskać rzeczywiste wyniki, uruchom fragment kodu na urządzeniu z systemem Android, aby uzyskać prawdziwe wyniki.

Daniel Nyamasyo
źródło
4

w kotlinie:

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
źródło