Estoy tratando de compartir una foto usando Facebook del nuevo SharePhoto & SharePhotoContent clases en el nuevo SDK.
Me gustaría utilizar una URL de la imagen en lugar de una imagen almacenada localmente.

Soy capaz de compartir una imagen con un almacenados localmente dibujable de recursos:

Bitmap image = BitmapFactory.decodeResource(getResources(), R.drawable.carrots);

SharePhoto photo = new SharePhoto.Builder()
                   .setImageBitmap(image)
                   .build();

SharePhotoContent content = new SharePhotoContent.Builder()
                                .addPhoto(photo)
                                .build();

shareDialog.show(content);

Pero cuando trato de usar una URL de la imagen :

SharePhoto photo = new SharePhoto.Builder()
                       .setImageUrl(Uri.parse("http://s3-ak.buzzfed.com/static/images/public/verticals/food-title.png?v=201504021353"))
                       .build();

todo lo que estoy viendo es un espacio en blanco post en el Facebook shareDialog.

Ha nadie esta probado y conseguido que funcione?

Muchas gracias!

  • Interesante, cuando utilizo el código exacto para crear una SharePhoto, me aparece este error en lugar de: i.imgur.com/O7TFGsM.jpg. Está usted seguro de la Uri.analizar es dar, de hecho, su no-null Uri de la espalda? A veces la Uri.método parse() fallará en silencio, y sólo le dan un valor nulo.
  • No he visto ese mensaje de error durante la prueba. Y estoy seguro de que la Uri es no nulo.
  • Usas esa url exacta en tu post de arriba? Si es así, entonces usted debe presentar un error en developers.facebook.com/bugs con una pequeña muestra de la aplicación como un zip, luego podemos tomar un vistazo a lo que está pasando.
  • Voy a utilizar esa dirección url exacta. Me llevará un poco para que el archivo de error, ya que estoy en un corto plazo de tiempo en el trabajo. Así que como una solución, sencillamente, he descargado la imagen antes de compartir como un mapa de bits. Pero gracias por tu ayuda!
  • ¿A resolver su problema ? Tengo el mismo problema
  • Packer no estoy todavía en la descarga de la imagen antes de compartir.
  • gracias !
  • Loco, 4 años han pasado y facebook aún se ha roto el SDK. Luchando con el mismo problema durante una semana. Mapa de bits no es una opción para mí, porque ellos guardarlo como JPEG, que no conserva el fondo transparente.

InformationsquelleAutor Lady_ari | 2015-04-03

3 Comentarios

  1. 2

    Lo que yo hice fue descargar la imagen y obtener el mapa de bits en el servidor y, a continuación, el post de FB:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    FacebookSdk.sdkInitialize(getApplicationContext());
    Button btn = (Button)findViewById(R.id.btn_share);
    btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    getImage();
    }
    });
    }
    private void getImage(){
    new DownloadImgTask().execute("http://url.com/1.jpg");
    }
    private void postFB(Bitmap bm){
    SharePhoto photo = new SharePhoto.Builder().setBitmap(bm).build();
    SharePhotoContent content = new SharePhotoContent.Builder().addPhoto(photo).build();
    ShareDialog dialog = new ShareDialog(this);
    if (dialog.canShow(SharePhotoContent.class)){
    dialog.show(content);
    }
    else{
    Log.d("Activity", "you cannot share photos :(");
    }
    }
    private class DownloadImgTask extends AsyncTask<String, Void, Bitmap>{
    protected Bitmap doInBackground(String... urls) {
    String urldisplay = urls[0];
    Bitmap bm = null;
    try {
    InputStream in = new java.net.URL(urldisplay).openStream();
    bm = BitmapFactory.decodeStream(in);
    } catch (Exception e) {
    Log.e("Error", e.getMessage());
    e.printStackTrace();
    }
    return bm;
    }
    protected void onPostExecute(Bitmap result) {
    postFB(result);
    }
    }
    • Sí, eso es lo que terminé haciendo así
  2. 1

    Si usted está utilizando el enlace en lugar de la imagen local, usted tiene que utilizar ShareDialog en lugar de SharePhoto , De la doc

    ShareLinkContent linkContent = new ShareLinkContent.Builder()
    .setContentTitle("title")
    .setContentDescription("description")
    .setContentUrl(Uri.parse("your link"))
    .build();
    • Así que no sólo puede utilizar una dirección url para mostrar simplemente una foto como la que se hace con un mapa de bits? Y si no, entonces ¿cuál es el punto de la setImageUrl función en la SharePhoto modelo?
    • Puedes intentar con SharePhoto.Generador() imagen = new SharePhoto.Generador()
    • Sí que he probado. Es en mi pregunta
    • lo que probé fue «SharePhoto foto» no «SharePhoto.El generador de la foto «
    • No creo que funcione. En el SharePhotoContent generador, tengo que añadir un SharePhoto objeto, no un SharePhoto.El generador de objeto.
    • No va a funcionar más como setContentTitle, setContentDescription, setContentUrl están en desuso.developers.facebook.com/docs/sharing/android

  3. 1

    Si quieres compartir una dirección URL de una imagen, entonces usted debe utilizar sharelinkcontent: este es mi código y que funcione, pero sin un título o descripción de la url de la imagen:

        ShareLinkContent linkContent = new ShareLinkContent.Builder()
    .setContentTitle("Shared from nearbyme application")
    .setContentDescription("This is a wonderful place")
    .setContentUrl(Uri.parse("http://www.villathena.com/images/nearby/thumbs/le-bus-bleu-private-tours.jpg"))
    .setImageUrl(Uri.parse("http://www.villathena.com/images/nearby/thumbs/le-bus-bleu-private-tours.jpg"))
    .build();
    shareDialog.show(content);

Dejar respuesta

Please enter your comment!
Please enter your name here