Cómo compartir / adjuntar imagen del servidor en gmail en android

Tengo una galería de imágenes donde las imágenes vienen del servidor. Quiero compartir / adjuntar imagen en gmail. Estoy usando "Agregar una Acción de Compartir Fácil". Http://developer.android.com/training/sharing/shareaction.html#set-share-intent

Inicialmente traté de compartir la imagen de mi SDCard y pude hacerlo utilizando el código a continuación.

Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND); sharingIntent.setType("image/jpeg"); String shareBody = "Here is the share content body"; sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject"); sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody); sharingIntent.putExtra(android.content.Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/DCIM/Camera/20130503_133024.jpg")); mShareActionProvider.setShareIntent(sharingIntent); 

Cuando intenté pasar mi URL de la imagen del servidor usando código abajo entonces mientras que enviando el email conseguí el mensaje que decía que "no podría fijar la imagen".

Uri.parse (" http://lh6.googleusercontent.com/-jZgveEqb6pg/T3R4kXScycI/AAAAAAAAAE0/xQ7CvpfXDzc/s1024/sample_image_01.jpg ")

Por favor, ayúdame a compartir la imagen del servidor.

Parece que los tipos de intención STREAM y EXTRA_STREAM no están realmente bien definidos y dependen en última instancia de cómo la aplicación de destino los interpreta. Si desea asegurar la imagen como binario en el correo electrónico, la manera más segura será descargar la imagen desde el servidor y adjuntarla a la intención usted mismo. Hay más luz sobre el tema aquí: "android.intent.extra.STREAM"

Después de pasar mucho tiempo, finalmente encontré solución:

  URL url = null; try { url = new URL(imageurl); } catch (MalformedURLException e) { e.printStackTrace(); } HttpURLConnection connection = null; InputStream input = null; try { connection = (HttpURLConnection) url.openConnection(); connection.setDoInput(true); connection.connect(); input = connection.getInputStream(); } catch (IOException e) { e.printStackTrace(); } Bitmap immutableBpm = BitmapFactory.decodeStream(input); Bitmap mutableBitmap = immutableBpm.copy(Bitmap.Config.ARGB_8888, true); View view = new View(this); view.draw(new Canvas(mutableBitmap)); String path = Images.Media.insertImage(getContentResolver(), mutableBitmap, "rbt", null); Uri uri = Uri.parse(path); Intent intent = new Intent(); intent.setType("image/*"); intent.putExtra(Intent.EXTRA_STREAM, uri); intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"}); intent.putExtra(Intent.EXTRA_SUBJECT, subject); intent.putExtra(Intent.EXTRA_TEXT, body); intent.setPackage("com.google.android.gm"); startActivity(intent); 

Y añada el permiso a continuación en manifest.xml

  <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

Funciona perfectamente para mi

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.