поделиться изображением с помощью Intent (Facebook и др.)

Я трачу много времени, пытаясь заставить поделиться простым jpeg-изображением, работающим через совместное использование Intent.

Самый важный из них, как обычно, это Facebook, и он, как обычно, не работает.

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..."));

Селектор открывается хорошо, Facebook тоже открывается и заставляет меня войти в систему, но затем мне сообщает, что загрузка не удалась. Я также пробовал Flicker и Mail, и все они терпят неудачу. Затем я попытался записать изображение в локальный файл и отправить оттуда, тоже не удалось:

    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);

Я понятия не имею, правильно ли я это делаю, раньше этого не делал.

Моя последняя попытка состояла в том, чтобы просто отправить строку HTML с изображением, включенным в тег img. Но Facebook, похоже, не обрабатывает тип «text/html», так что это не вариант. Я уверен, что для этого нужно всего несколько строк кода. Но какие?

изменить

Я забыл строку

shareIntent.putExtra(Intent.EXTRA_STREAM, picUri);

в первом фрагменте кода. Он был там, когда я пытался, тоже не работал. Не спать слишком долго...

9
задан didi_X8 2 April 2012 в 08:54
поделиться