2012-04-02 15 views
9

Estoy perdiendo mucho tiempo, tratando de compartir una imagen jpeg simple trabajando a través del uso compartido de Intención.compartir foto a través de Intent (Facebook y compañía)

El más importante, como siempre, es Facebook, y como de costumbre, no funciona.

Intent shareIntent = new Intent(Intent.ACTION_SEND); 
Uri picUri = Uri.parse("http://someserver.com/somepic.jpg"); 
shareIntent.setType("image/jpeg"); 
shareIntent.putExtra(Intent.EXTRA_STREAM, picUri); 
shareIntent.putExtra(Intent.EXTRA_TEXT, someString); 
startActivity(Intent.createChooser(shareIntent, "some text...")); 

El selector se abre muy bien, Facebook también se abre y se me hace inicio de sesión, pero luego me dice que updoad falló. También probé Flicker y Mail, y todos fallaron. Luego trató de escribir la imagen al archivo local y enviar desde allí, también fracasaron:

Drawable dr = ImageLoader.getDrawable(url); 
    Bitmap bmp = ((BitmapDrawable)dr).getBitmap(); 
    ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
    bmp.compress(Bitmap.CompressFormat.JPEG, 80, stream); 
    byte[] data = stream.toByteArray(); 

    FileOutputStream ostream; 
    try { 
     ostream = this.openFileOutput("pic.jpeg", Context.MODE_WORLD_READABLE); 
     ostream.write(data); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    Uri picUri = Uri.fromFile(new File("pic.jpeg")); 
    shareIntent.putExtra(Intent.EXTRA_STREAM, picUri); 

no tengo ni idea de si lo hago correctamente, no lo han hecho antes.

Mi último intento fue simplemente enviar una cadena HTML con la imagen incluida como etiqueta img. Pero Facebook parece no manejar el tipo "text/html", por lo que no es una opción. Estoy seguro de que solo necesita unas pocas líneas de código. ¿Pero cuáles?

edición

me olvidó la línea

shareIntent.putExtra(Intent.EXTRA_STREAM, picUri); 

en el primer fragmento de código. Estaba allí cuando lo intenté, tampoco funcionó. No ha dormido demasiado ...

+5

¿Alguna vez encontró una forma razonable de compartir una imagen desde una URL? – cimnine

+0

Hola didi_X8, ¿Has encontrado una solución a este problema? Como estoy atascado también – Elshaer

Respuesta

0

Creo que esto le responderá a su pregunta. https://stackoverflow.com/a/3553102/478537

Parece que estás en el camino correcto, lo único que veo es que en el primer fragmento de código, que no está utilizando el picUri en cualquier lugar, y por lo tanto no es de ser enviado, y en el segundo, se está configurando EXTRA_STREAM dos veces (lo que no causaría ningún problema, solo código redundante).

+0

sry, hace mucho tiempo ... Muchas gracias, no necesito trabajar con FB stuff atm, por lo tanto no voy a comprobar si esto funciona. Tal vez algún día lo necesite de nuevo. Gracias de todos modos –

0

..Intent.EXTRA_TEXT, someString.

Esto producirá un error en su transacción con Facebook- no en "someString" - El uso compartido de Facebook espera y busca una URL transmitida a través de EXTRA_TEXT. Por qué - no pregunte ... No entendí a los chicos

0

Bueno, pasé mucho tiempo, y el problema fue la extensión del archivo (png hizo un problema así que ignore la extensión del archivo en este caso y use "jpg"), pruebe el siguiente código

public static void shareImageFileWithIntent(File imageFile, Context context) { 
    MimeTypeMap mime = MimeTypeMap.getSingleton(); 
    String type = mime.getMimeTypeFromExtension("jpg"); 
    Intent sharingIntent = new Intent(Intent.ACTION_SEND); 
    sharingIntent.setType(type); 
    sharingIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(imageFile)); 
    sharingIntent.putExtra(Intent.EXTRA_TEXT, "your extra text"); 
    sharingIntent.putExtra(Intent.EXTRA_SUBJECT, "your subject"); 
    context.startActivity(Intent.createChooser(sharingIntent, context.getString(R.string.share_image_intent))); 
} 
0

en lugar de pasar la imagen a través de intentos, se puede crear una nueva clase y guardarlos allí de una actividad. Y acceda a esa imagen desde otra actividad.

+0

Parece más un comentario que una respuesta. –

Cuestiones relacionadas