2010-08-24 12 views

Respuesta

105

De hecho, esto se hace con Intents.

Para compartir una imagen, al igual que en el ejemplo de la imagen, sería algo como esto:

Intent share = new Intent(Intent.ACTION_SEND); 
share.setType("image/jpeg"); 

share.putExtra(Intent.EXTRA_STREAM, 
    Uri.parse("file:///sdcard/DCIM/Camera/myPic.jpg")); 

startActivity(Intent.createChooser(share, "Share Image")); 

Para texto que usar algo como:

Intent share = new Intent(Intent.ACTION_SEND); 
share.setType("text/plain"); 
share.putExtra(Intent.EXTRA_TEXT, "I'm being sent!!"); 
startActivity(Intent.createChooser(share, "Share Text")); 
+6

¿Es posible compartir imágenes apuntadas por http url: share.putExtra (Intent.EXTRA_STREAM, Uri.parse ("http://helios.gsfc.nasa.gov/image_mag_stamp.jpg")); ? No puedo hacer que esto funcione. – sinek

+1

El segundo no funciona con la aplicación de mensajería. –

+0

@Second ¿La versión de texto muestra más opciones del emulador? Intenté con lo que sugirió y de inmediato procede a la aplicación de sms incorporada. Prefiero ver algo más explícitamente como la imagen mencionada en la pregunta. – thegrinner

4

Sí. Debe proporcionar una Actividad con un filtro de intención que pueda manejar objetos de la imagen/jpeg Tipo MIME (por ejemplo, si desea admitir el intercambio de imágenes JPEG), y una acción de, presumiblemente, ACTION_SEND.

Muchas de las aplicaciones integradas de Android son de código abierto, puede consultar el archivo de manifiesto de la aplicación de mensajería para ver qué filtros de intención está utilizando.

+0

En realidad, no creo que todas las aplicaciones integradas de Android sean de código abierto, solo el sistema operativo. –

+2

Definitivamente no son los que utilizan los servicios de Google (Gmail, Maps, etc.) - Me refería a los más básicos, el que viene con el emulador. Voy a reformular. – EboMike

6

que estaba teniendo problemas con el respuesta aceptada Lo que funcionó para mí era la creación de un archivo de la ruta, a continuación, analizar el URI del archivo, como:

Uri.fromFile(new File(filePath)); 

en lugar de

Uri.parse(filePath) 

Sólo en caso de que alguien está teniendo el mismo problema.

+3

Tu solución también resolvió mi problema más que el aceptado. ¿Sabes por qué la respuesta aceptada no funciona? – RestInPeace

+1

@RestInPeace probablemente dependa de dónde resida su archivo en el sistema de archivos. En el ejemplo, dieron una cadena como archivo: /// ... si su ruta no estaba en el mismo formato, el uso de Uri.parse fallaría. – DiscDev

+0

En realidad para mí 'Uri.parse (filePath)' funcionó en algunas aplicaciones, (Whatsapp sharing por ejemplo, y Dropbox) pero falló con Instagram, Gmail y Facebook, por ejemplo. 'Uri.fromFile (new File (filePath))' funciona como un amuleto, excepto en Gmail, que aún falla pero puedo redactar el correo electrónico y puedo ver que el archivo está adjunto correctamente. – Olaia

Cuestiones relacionadas