Wie aktiviere ich die Schaltfläche "Teilen" in der Android App?

109

Ich möchte meiner Android-App die Schaltfläche "Teilen" hinzufügen.

So wie das

::

Ich habe die Schaltfläche "Teilen" hinzugefügt, aber die Schaltfläche ist nicht aktiv. Ich klicke, aber nichts passiert.

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

Ich möchte Text in meiner ersten Registerkarte (first_tab.xml) oder zweiten Registerkarte (second_tab.xml) freigeben.

Code in tab (xml) (falls erforderlich):

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

Persöhnlicher Jesus
quelle
5
Um diese Art von Share-Schaltfläche hinzuzufügen, müssen Sie ActionBar / ActionBarSherlock verwenden und ShareProvider hinzufügen.
h4rd4r7c0r3

Antworten:

300

Fügen Sie einen hinzu Buttonund klicken Sie auf, Buttonum diesen Code hinzuzufügen:

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

Nützliche Links:

Für das grundlegende Teilen

Zur Anpassung

Basavaraj Hampali
quelle
Fügen Sie die Schaltfläche hinzu, wo? Ich habe bereits einen Menüpunkt mit dem shareSymbol in meiner Aktionsleiste erstellt
Si8
Hallo, in der obigen Methode scheinen mehrere Anwendungen angezeigt zu werden. Ich möchte wissen, welche Anwendung für die Freigabe verwendet wird, und nach Abschluss der Freigabe muss ich eine API aufrufen. Ist es möglich zu überprüfen, welche Anwendung verwendet wird und wie die API nach der Freigabe aufgerufen wird? Vielen Dank ...
patel135
Es wurde kopiert von code.tutsplus.com/tutorials/… .
CoolMind
Funktioniert gut für mich, außer für Facebook. Es zeigt dort leider nichts.
Evaggelos Manousakis
Wie füge ich ein Bild hinzu? Kannst du mich bitte vorschlagen?
Tasnuva oshin
13

Erstellen Sie eine Schaltfläche mit einer ID-Freigabe und fügen Sie das folgende Code-Snippet hinzu.

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

Das obige Codefragment öffnet die Freigabeauswahl beim Klicken auf die Freigabeschaltfläche. Beachten Sie jedoch, dass das Freigabecode-Snippet mit dem Emulator möglicherweise keine sehr guten Ergebnisse liefert. Führen Sie für tatsächliche Ergebnisse das Code-Snippet auf dem Android-Gerät aus, um die tatsächlichen Ergebnisse zu erhalten.

Daniel Nyamasyo
quelle
4

in Kotlin:

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
quelle