我浪费了很多时间,试图通过共享意图来共享一个简单的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也打开,让我登录,但它告诉我updoad失败。我也尝试了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);
在第一个代码片段中。当我尝试时它就在那里,也不起作用。太长时间没有睡觉...
4条答案
按热度按时间pgpifvop1#
我想这会回答你的问题。
看起来您的路径是正确的,我所能看到的是,在第一个代码片段中,您没有在任何地方使用picUri,因此它没有被发送,而在第二个代码片段中,您设置了两次EXTRA_STREAM(这不会导致任何问题,只是冗余代码)。
sczxawaw2#
..Intent.EXTRA_TEXT, someString
.这将使您与Facebook的交易失败-而不是"someString"-Facebook共享期望并搜索通过EXTRA_TEXT传输的URL。为什么-不要问..我不明白的家伙
x8diyxa73#
好吧,我花了很多时间,问题是文件的扩展名(png造成了一个问题,所以在这种情况下忽略文件扩展名,使用“jpg”),尝试以下代码
2jcobegt4#
您可以创建一个新的类并从一个Activity将其保存在那里,然后从另一个Activity访问该图像,而不是通过Intent传递图像。