Come attivare il pulsante "Condividi" nell'app Android?


109

voglio aggiungere il pulsante "Condividi" alla mia app Android.

Come quello

:

Ho aggiunto il pulsante "Condividi", ma il pulsante non è attivo. Faccio clic, ma non succede niente.

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

Voglio condividere il testo nella mia prima scheda (first_tab.xml) o seconda scheda (second_tab.xml).

Codice nella scheda (xml) (se necessario):

<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
Per aggiungere questo tipo di pulsante Condividi è necessario utilizzare ActionBar / ActionBarSherlock e aggiungere ShareProvider.
h4rd4r7c0r3

Risposte:


301

Aggiungi un Buttone facendo clic su Buttonaggiungi questo codice:

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

Link utili:

Per la condivisione di base

Per la personalizzazione


Aggiungi il pulsante dove? Ho già creato una voce di menu con l' shareicona nella mia barra delle azioni
Si8

Ciao, nel metodo sopra sembra visualizzare più applicazioni. Voglio sapere quale applicazione è stata utilizzata per la condivisione e al termine della condivisione devo chiamare un'API. È possibile controllare quale applicazione è stata utilizzata e anche come chiamare l'API dopo la condivisione? Grazie ...
patel135


Funziona bene per me tranne che per Facebook. Non mostra nulla lì, sfortunatamente.
Evaggelos Manousakis

come aggiungere un'immagine? puoi suggerirmi per favore ??
Tasnuva oshin il

13

Crea un pulsante con una condivisione dell'ID e aggiungi il seguente frammento di codice.

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

Lo snippet di codice precedente aprirà il selettore di condivisione all'azione del clic sul pulsante di condivisione. Tuttavia, nota ... Lo snippet di codice di condivisione potrebbe non produrre risultati molto buoni utilizzando l'emulatore. Per risultati effettivi, esegui lo snippet di codice sul dispositivo Android per ottenere i risultati reali.


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 :"))
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.