在文档中很清楚,你可以发送多个数据:
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);
shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);
shareIntent.setType("image/*");
startActivity(Intent.createChooser(shareIntent, "Share images to.."));
但似乎从那一行:shareIntent.setType("image/*");
所有部分都必须是相同的数据类型。如果我想发送图片(图片/ jpeg)和标题中应该附带的标签(text / plain),该怎么办?
如何在一个shareIntent中处理多种内容?是否可以将2个shareIntents发送到同一个活动?我该如何处理?
答案 0 :(得分:10)
如果你的目标是与文字分享一张图片,这就是我建议的代码:
String text = "Look at my awesome picture";
Uri pictureUri = Uri.parse("file://my_picture");
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_TEXT, text);
shareIntent.putExtra(Intent.EXTRA_STREAM, pictureUri);
shareIntent.setType("image/*");
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(Intent.createChooser(shareIntent, "Share images..."));
答案 1 :(得分:7)
关于您是要发送多个图像还是仅发送一个图像,但是使用相关文本,问题并不完全清楚。
在第一种情况下(多个图像):
使用ACTION_SEND_MULTIPLE
并将uris列表提供为EXTRA_STREAM
,如下所示:
Intent shareIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);
shareIntent.setType("image/*");
如果是第二种情况(图像加文字):
仅使用ACTION_SEND
并提供 EXTRA_STREAM
和 EXTRA_TEXT
,例如:
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_TEXT, text);
shareIntent.putExtra(Intent.EXTRA_STREAM, imageUri);
shareIntent.setType("image/*");
但是,如果您需要共享不同MIME类型的流(例如图片和其他附件),请使用更通用的MIME类型,例如*/*
。例如:
shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
shareIntent.setType("*/*");
来自ACTION_SEND_MULTIPLE
的文件(强调我的):
支持多种类型,接收者应处理混合类型 只要有可能。接收器检查它们的正确方法是 在每个URI上使用内容解析器。 意图发件人应该尝试 将最具体的mime类型放在intent类型中,但它可能会掉落
返回<type>/*
或*/*
。e.g。如果您要发送
image/jpg
和image/jpg
,则意图的类型可以 是image/jpg
,但如果您要发送image/jpg
和image/png
,那么就是{。}} 意图的类型应为image/*
。
这适用于混合图像和下载的文件。