Я трачу много времени, пытаясь заставить поделиться простым 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);
в первом фрагменте кода. Он был там, когда я пытался, тоже не работал. Не спать слишком долго...