如何为(共享)电子邮件意图过滤特定应用程序?

4

我在我的应用程序中使用Action Send和createChooser API来通过各种电子邮件应用程序分享一些文本消息。但我不希望所有已安装的应用程序都出现在列表中。我想要特别包括Facebook,Gmail和Twitter。如何进行过滤?谢谢。

String TEXT = "I shared the file " + " via MyApp";
    Intent sendIntent = new Intent(Intent.ACTION_SEND);
    sendIntent.setType("text/plain");
    sendIntent.putExtra(Intent.EXTRA_TEXT, TEXT);
    startActivity(Intent.createChooser(sendIntent, "Share the program:"));

这是我使用的代码。

1个回答

3

如果您知道您想要的应用程序,您可以在对话框中创建自己的选择器,并根据用户的选择触发特定的意图。

您可以通过调用PackageManager的queryIntentActivities来检查可用的应用程序:

Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("text/plain");
List pkgAppsList = context.getPackageManager().queryIntentActivities( sendIntent, 0);

接着您可以选择所需内容并弹出对话框。


谢谢Andras。在createChooser() API中有没有过滤器的方法,因为我想要默认的共享屏幕。 - Narayanan S
另外,是否有一种方法可以按应用程序类型(文本、电子邮件等)进行过滤? - Rooster242

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接