Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Este primer método que se propone para integrar la forma de compartir contenido en las principales
redes sociales se basa en una filosofía muy sencilla: el usuario dispone, en su dispositivo, de las
aplicaciones de las principales redes sociales que utiliza. Por ello, es posible compartir información a
través de estas aplicaciones, y no desarrollando una pieza de software específica, que no sería más
que una versión limitada de lo que ya proporciona cada aplicación de red social.
Recordemos que el funcionamiento de las intenciones es el siguiente: hay que crear una intención
especificando la acción que se desea ejecutar y, eventualmente, agregar datos adicionales.
Aquí, la acción que nos interesa es la acción AC TION_SEND: indica que la aplicación desea enviar
información. El destino del envío no se especifica, éste es el principio de funcionamiento de las
intenciones, sino que es el usuario quien, en tiempo de ejecución, entre las opciones capaces de
realizar la solicitud selecciona el modo de compartir el contenido.
El contenido que se quiere compartir en el marco de la acción seleccionada debe ser bien un texto o
bien un archivo enviado en formato binario.
Ejemplo
Intent shareIntent=
new Intent(android.content.Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,
"Ejemplo compartir contenido");
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT,
"Texto del mensaje compartido");
startActivity(
Intent.createChooser(shareIntent, "Compartir en..."));
Para integrar en esta barra de acción el icono específico para compartir contenido y las acciones
asociadas basta con agregar un ítem en el archivo XML del menú, configurándole un atributo de
tipo actionProviderClassespecífico.
El atributo ActionProviderClassse incluye con la API 14 y permite asociar una clase que se
encargará de gestionar la acción cuando se seleccione el elemento de menú.
Es preciso, por tanto, indicar estas clases como valor para el atributo actionProviderClassdel
ítem de menú.
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_item_compartir"
android:showAsAction="ifRoom"
android:title="Compartir"
android:actionProviderClass="android.widget.ShareActionProvider" />
</menu>
Para vincular el menú con su actividad es preciso, como se ha visto en el capítulo Completar la
interfaz de usuario, sección Menús, sobrecargar el método on CreateOptionMenu de la
clase Activity.
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_compartir, menu);
[...]
}
ShareActionProvider shareActionProvider =
(ShareActionProvider) item.getActionProvider();
Sólo queda por definir, tal y como hemos visto anteriormente, una intención que asociaremos al
objeto de tipo Sh areActionProvider, invocando al método setShareIntent de la
clase ShareActionProvider.
Sintaxis
Ejemplo
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_cap10, menu);
MenuItem item = menu.findItem(R.id.menu_item_share);
ShareActionProvider shareActionProvider =
(ShareActionProvider) item.getActionProvider();
shareActionProvider.setShareIntent(createShareIntent());
return true;
}
shareIntent.setType("text/plain");
shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,
"Ejemplo compartir contenido");
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT,
"Texto del mensaje compartido");
return shareIntent;
}
No existe el riesgo de depender de una API externa (del estilo de las API que proveen las
redes sociales), lo cual limita y reduce el mantenimiento.
Todas las redes sociales instaladas en el dispositivo del usuario, y únicamente estas redes,
se mostrarán y podrán seleccionarse.
No obstante, existen ciertas limitaciones que pueden resultar algo frustrantes: por un lado, el
mensaje que se envía es bastante sencillo y no tiene ningún formato, por otro lado, puede que las
aplicaciones de redes sociales no sean compatibles con la intención.