我花了很多时间,试图通过共享意图来分享一个简单的jpeg图像。
像往常一样,最重要的是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);
在第一个代码片段中。我尝试时它在那里,也没有起作用。 睡眠时间太久了...