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.
- Set Letras en MP3 ID3v2 Tag
- Android TTS no habla gran cantidad de texto
- Android onConfigurationChanged no se llama
- Retrofit-IllegalArgumentException: url inesperada
- Cómo obtener el tiempo y la fecha del sello de fecha y hora
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.
- Mostrar información basada en el botón que se pulsó
- Cómo comparar una cadena de Intent.getStringExtra ()?
- Error de autenticación: no se puede responder a ninguno de estos desafíos: {} Android - 401 no autorizado
- Cómo consultar el valor de la columna que se establece como puntero a otra tabla en Parse
- Determinar la vista que aparece en LayoutManager pre-layout
- ¿Por qué falla mi prueba de unidad relacionada con JSONObject?
- ¿Cómo almacenar y recibir una foto de perfil en Parse.com?
- El uso de un HashMap para almacenar grandes cantidades de datos está ralentizando mi aplicación de Android, ¿hay otras opciones?
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.
- Cambiar la forma o la sombra del icono o eliminarlo por completo
- pegado con conseguir la foto de la cámara al usar la lengüeta Actividad