如何根据通过createChooser()选择的应用程序修改Android Intent.extras

时间:2014-06-05 11:32:06

标签: android android-intent twitter

在我的Android应用中,我发送文字给第三方应用,如下所示:

String subject = "...";
String body = "...";

Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("text/plain");
sendIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
sendIntent.putExtra(Intent.EXTRA_TEXT, body);

Intent it = Intent.createChooser(sendIntent, "Share:");
G.act.startActivity(it);        

这很好用。但是,如果用户选择通过电子邮件分享,我想发送不同的文本,而不是用户选择通过Twitter分享(当然这仅限于140个字符)。在用户在选择器中选择他们的应用程序后,有什么方法可以接收某种回调,并在将Intent EXTRAS字段发送到第三方应用程序之前修改它吗?

1 个答案:

答案 0 :(得分:0)

  

在用户在选择器中选择他们的应用程序后,有什么方法可以收到某种回调,并在将Intent EXTRAS字段发送到第三方应用程序之前修改它吗?

不,抱歉。您需要实现自己的“选择器”机制。您甚至没有发现用户选择了任何,更不用说他们选择的具体内容了,更不用说根据选择影响您使用的内容的变化。

使用股票“选择器”,您可以使用Intent.EXTRA_INITIAL_INTENTS获得接近您所寻求的任何东西的唯一方法是让选择器支持多个Intent来填充选择器。但是,这仅适用于您可以通过Intent区分可能的目标应用的情况。所以,你可以:

  • 一个ACTION_SENDTO Intentmailto: Uri将被电子邮件客户端使用
  • 可以共享文字的其他内容使用的基础ACTION_SEND Intent

您可以在特定于电子邮件的Intent中提供较长的邮件,在较为通用的Intent中提供较短的邮件。