Android: Share ¿La intención de la imagen no funciona con Facebook?

Hola Tengo el siguiente código para compartir una imagen:

// Share Intent share = new Intent(Intent.ACTION_SEND); share.setType("image/jpeg"); Uri uri = Uri.parse(getFilesDir() + File.separator + "myGoal.jpg"); share.putExtra(Intent.EXTRA_STREAM, uri); startActivity(Intent.createChooser(share, "Share Image")); 

Funciona para compartir la imagen a Dropbox pero si selecciono la opción de Facebook, consigo el diálogo de actualización de estado de Facebook sin ninguna imagen adjunta y si intento actualizar mi estado con 'Prueba' no funciona. Sin errores. Simplemente no funciona.

Sé que no es la imagen porque sube a mi Dropbox correctamente y puedo levantar la imagen y mirarla.

¿Tengo que adjuntar la imagen a la intención de manera diferente para que funcione con Facebook?

¿Algunas ideas? Estoy depurando en un dispositivo físico.

Así que descubrí el problema.

Estaba guardando la imagen en el almacenamiento interno con getFilesDir () que puso la imagen en mi sandbox de aplicaciones y se hizo inaccesible a las otras aplicaciones.

He reemplazado mi código con lo siguiente:

 String file_path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/MyApp/"; File dir = new File(file_path); dir.mkdirs(); File file = new File(dir, "myPic.png"); FileOutputStream fOut = new FileOutputStream(file); screenshot.compress(Bitmap.CompressFormat.PNG, 100, fOut); fOut.flush(); fOut.close(); // Share Intent share = new Intent(Intent.ACTION_SEND); share.setType("image/png"); share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file)); share.putExtra(Intent.EXTRA_TEXT, "My Image"); startActivity(Intent.createChooser(share, "Share Image")); 

Funciona perfectamente bien ahora.

Lo que he hecho para publicar la imagen en facebook es en lugar de pasar directamente i crear una función y escribir de esta manera:

  private void ShareWall(String message) { Bundle parameters = new Bundle(); // share msg parameters.putString("message", message); // shre image which you have define above parameters.putString("picture", postImage); try { facebook.request("me"); String response = facebook.request("me/feed", parameters, "POST"); Log.d("response: ", response); if (response == null || response.equals("")) { response.equals(""); showToast("No Response."); } else { showToast("Message has been posted to your walll!."); } finish(); } catch (Exception e) { showToast("Message failed to posdt on wall."); e.printStackTrace(); finish(); } } 

Espero que esto te ayude.

Todavía puede compartir imágenes (pero no texto) de su aplicación a Facebook, incluso si no está utilizando el SDK de Facebook.

Sólo asegúrese de que utiliza Uri.fromFile en lugar de Uri.parse y funcionará:

NO UTILICE: intent.putExtra (Intent.EXTRA_STREAM, Uri.parse (pathToFile));

USE: intent.putExtra (Intent.EXTRA_STREAM, Uri.fromFile (nuevo archivo (pathToFile)));

Aquí está una solución sin usar la escritura externa del archivo:

 Drawable mDrawable = myImageView1.getDrawable(); Bitmap mBitmap = ((BitmapDrawable)mDrawable).getBitmap(); String path = MediaStore.Images.Media.insertImage(getContentResolver(), mBitmap, "Image I want to share", null); Uri uri = Uri.parse(path); Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); shareIntent.putExtra(Intent.EXTRA_STREAM, uri); shareIntent.setType("image/*"); startActivity(Intent.createChooser(shareIntent, "Share Image")); 

En este caso, mi imagen proviene de un ImageView myImageView.

  • IntelliJ Build Error Context Mismatch
  • Máscara Libgdx con imagen
  • Android: el teclado no aparece en la ventana flotante
  • Envío de correo electrónico con GMail en android
  • Android Studio Annotation AbstractProcessor no encontrado
  • "Intellij idea" depurar la clase static
  • Las invitaciones a los servicios de juegos de Google se pierden
  • Google google maps agrega al marcador propia etiqueta
  • Android Image Viewer de la aplicación
  • Cómo conectarse a un teléfono remoto mediante HFP-bluetooth mediante programación en android
  • ¿Cómo comprobar un número IBAN usando el Apache IBANCheckDigit?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.