¿Cómo activar el botón "Compartir" en la aplicación de Android?

109

Quiero agregar el botón "Compartir" a mi aplicación de Android.

Como eso

:

Agregué el botón "Compartir", pero el botón no está activo. Hago clic, pero no pasa nada.

Mi código en 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"));
}

Quiero compartir texto en mi primera pestaña (first_tab.xml) o segunda pestaña (second_tab.xml).

Código en la pestaña (xml) (si es necesario):

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

Jesús personal
fuente
5
Para agregar este tipo de botón Compartir, debe usar ActionBar / ActionBarSherlock y agregar ShareProvider.
h4rd4r7c0r3

Respuestas:

301

Agregue un Buttony al hacer clic en Buttonagregar este código:

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

Enlaces útiles:

Para compartir básico

Para personalización

Basavaraj Hampali
fuente
Agrega el botón donde? Ya creé un elemento de menú con el shareícono en mi barra de acción
Si8
Hola, En el método anterior parece mostrar múltiples aplicaciones. Quiero saber qué aplicación se usó para compartir y, después de compartir, tengo que llamar a una API. ¿Es posible comprobar qué aplicación se utilizó y también cómo llamar a la API después de compartir? Gracias ...
patel135
Se ha copiado de code.tutsplus.com/tutorials/… .
CoolMind
Funciona bien para mí, excepto para Facebook. No muestra nada allí, desafortunadamente.
Evaggelos Manousakis
¿cómo agregar una imagen? ¿Puedes sugerirme por favor?
Tasnuva oshin
13

Cree un botón con un id compartido y agregue el siguiente fragmento de código.

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

El fragmento de código anterior abrirá el selector de compartir en la acción de clic del botón de compartir. Sin embargo, tenga en cuenta ... Es posible que el fragmento de código compartido no produzca muy buenos resultados con el emulador. Para obtener resultados reales, ejecute el fragmento de código en el dispositivo Android para obtener resultados reales.

Daniel Nyamasyo
fuente
4

en 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
fuente