Big*_*337 5 android android-intent
在文档中非常清楚,您可以使用以下方式发送多个数据:
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.."));
Run Code Online (Sandbox Code Playgroud)
但似乎从这一行:shareIntent.setType("image/*");所有部分必须是相同的数据类型.如果我想发送一张图片(图片/ jpeg)和一个应该在标题(text/plain)中同时出现的标签?
如何在一个shareIntent中处理多种内容?是否可以将2个shareIntents发送到同一个活动?我该怎么处理?
Inn*_*pel 12
如果您的目标是与文本共享一张图片,这是我建议的代码:
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..."));
Run Code Online (Sandbox Code Playgroud)
从问题是否要发送多个图像或仅发送单个图像,但是使用相关文本,这一点并不十分清楚.
在第一种情况下(多个图像):
使用ACTION_SEND_MULTIPLE并提供uris列表EXTRA_STREAM,如:
Intent shareIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);
shareIntent.setType("image/*");
Run Code Online (Sandbox Code Playgroud)
如果是第二种情况(图像加文字):
只使用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/*");
Run Code Online (Sandbox Code Playgroud)
但是,如果您需要共享不同MIME类型的流(例如图片和其他附件),则只需使用更通用的MIME类型,例如*/*.例如:
shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
shareIntent.setType("*/*");
Run Code Online (Sandbox Code Playgroud)
从ACTION_SEND_MULTIPLE(强调我的)文件:
支持多种类型,接收器应尽可能处理混合类型.接收方检查它们的正确方法是在每个URI上使用内容解析器.意图发送者应该尝试将最具体的mime类型放在intent类型中,但它可以回退到
<type>/*或*/*根据需要.例如,如果您要发送
image/jpg和image/jpg,意图的类型可以是image/jpg,但如果您要发送image/jpg和image/png,然后意图的类型应该是image/*.
这适用于混合图像和下载的文件.
| 归档时间: |
|
| 查看次数: |
12415 次 |
| 最近记录: |