自定义共享对话框

3
我正在尝试获取一个共享对话框,类似于下面的对话框,用于将一些纯文本与预选应用程序列表(电子邮件、Facebook、Twitter、Google+)共享。问题是,如果我启动一个分享文本的意图,则对话框中会出现太多应用程序。
1)我能否明确选择在对话框中显示的应用程序?
2)如果不能,我可以制作自定义对话框。如果可以,我能否具体选择要启动的应用程序并为其提供我的意图?对于每个对话框选项,我都将启动一个特定的应用程序。第一项-电子邮件,第二项- Facebook等。
1个回答

2

1) 我可以明确选择对话框中显示的应用程序吗?

您无法修改操作系统创建的应用程序选择器列表。(我猜测所有这些应用程序都接受“text/plain”这种非常普遍的数据类型。)

2) 如果不能,我可以制作自定义对话框。如果可以的话,我是否可以选择要启动的特定应用程序并为其提供意图?对于每个对话框选项,我会启动一个特定的应用程序。第一项 - 电子邮件,第二项 - Facebook等。

就建立自己的自定义列表而言,您需要考虑几点:

  • 您可以创建Intents来显式地打开GMail和Facebook应用程序,但有些用户不使用这些特定的应用程序。相反,您应该显示接受特定数据类型(或MIME类型)的应用程序。

  • 电子邮件应用程序具有特定的MIME类型:“message/rfc822”,但某些应用程序不使用它。使用“text/plain”可能更安全。

  • 我不知道任何特定的Facebook MIME类型,您将不得不无论如何使用“text/plain”。或者,您可以使用PackageManager搜索每个已安装的应用程序,查找字符串“facebook”,但是第三方Facebook应用程序可能没有这个字符串在其包名称中...

如果您要使用“text/plain”数据类型,那么结果将是操作系统已经自动为您创建的列表...

您想做的事情并不是不可能的,但比听起来难。最后,您可能会意外地从自定义列表中排除用户喜欢的应用程序...

(Android在这个主题上有一篇富有洞见的博客文章:Sharing with Intents。)


感谢您详细的回答。 - Buffalo

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