Android - ACTION_SEND选择器只有sms消息

时间:2015-02-25 11:10:35

标签: android android-intent

关于这个问题的问题很少,但它们似乎都没有帮助我,我有一个“分享短信”按钮的对话框。 当我按下它时,我想显示可以发送它的短信应用程序。 它正在工作,但我得到了更多的应用程序,然后我想要。 我想只显示假设发送短信的应用, 但它显示了一切.. linkedin,Facebook,gmail,基本上每个应用程序。

我只想要消息应用程序,例如Messenger,以及默认的手机消息应用程序。

这是我目前的代码:

Intent intent = new Intent(Intent.ACTION_SEND);
                    intent.setType("text/plain");
                    intent.putExtra(Intent.EXTRA_TEXT,
                            SharedPref.getNamePrefValue() +
                                    " shared " + doc.getName());
                    startActivity(intent);

我怎样才能只列出我想要的应用程序? 我试过用不同的setType选项“玩”但没有一个工作。

非常感谢你的帮助!

4 个答案:

答案 0 :(得分:0)

这是它的工作原理。您只需列出声明能够处理text/plain内容的所有应用。我建议不要限制您的用户并更改按钮的标签,以及#34;与短信共享"只是"分享"并让您的用户决定。

答案 1 :(得分:0)

您可以使用其包名为特定应用创建意图,因此您的意图将被传递到该特定应用,并且不会显示任何对话框。但如果没有安装该应用程序,您将不得不处理它,可能会提示用户去游戏商店。

我建议你做@ marcin-orlowski建议的事情:用intent filter缩小可能性,让用户决定哪个应用程序将处理数据。

答案 2 :(得分:0)

要表明您要发送短信,只需指定意图数据,如下所示:

intent.setData(Uri.parse("sms:"));

然后选择器将只向您展示可以处理短信的应用程序。 请注意,要指定短信的正文,您可以使用:

intent.putExtra("sms_body", "the text to send"); 

答案 3 :(得分:0)

Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.putExtra("sms_body", SMS_BODY);
sendIntent.setType("vnd.android-dir/mms-sms");
activity.startActivity(sendIntent);

我希望这个答案可以帮到你