Mi aplicación genera imágenes que un usuario puede guardar o compartir con otras personas. El siguiente código funciona para la mayoría de las aplicaciones: Messenger, Facebook, Dropbox, correo electrónico, etc. Es decir, la aplicación elegida carga la imagen y el usuario puede compartir la imagen con éxito con esa aplicación.Compartir una imagen con la aplicación Google+ con Intent.ACTION_SEND e Intent.EXTRA_STREAM
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/png");
File o = new File(dir, "file.png");
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(o));
startActivity(Intent.createChooser(intent , "Send options"));
Sin embargo, cuando decido Google+ en la lista de aplicaciones, Google + se inicia, pero la imagen no está incluido en la ventana posterior. En lugar de ello, Google + muestra un mensaje Tostada con:
"You can only post photos stored on your device."
Esto es un poco confuso, porque la imagen está en la tarjeta SD externa, es decir /mnt/sdcard/AppDir/file.png. Estoy usando la última actualización de la aplicación de Google+ (2.3.1.242969).
¿Hay otro truco para compartir una imagen con google +?
Gracias.
ACTUALIZACIÓN:
Mi aplicación genera las imágenes que se comparten, por lo que el ejemplo siguiente de @ chirag-sha no era directamente aplicable. Pero, usar MediaStore parece la idea correcta. Me he decidido por el código básico a continuación:
void shareImage(int position) {
File f = getFileFor(position);
ContentValues values = new ContentValues(2);
values.put(MediaStore.Images.Media.MIME_TYPE, "image/png");
values.put(MediaStore.Images.Media.DATA, f.getAbsolutePath());
Uri uri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/png");
intent.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(intent , "Send options"));
}
Esto funciona con Google+ y todas las demás aplicaciones con las que he probado. Dejaré la pregunta abierta en caso de que no sea una buena práctica. ¿Alguien puede confirmar que esta es la forma correcta de hacerlo?
Gracias por este consejo. Usar Media Store parece ser el camino correcto, y tu publicación me dio esa idea. –