2012-08-08 61 views
3

我试图获取一个类似于下面的共享对话框,用于与预先选择的应用程序列表(电子邮件,Facebook,Twitter和Google+)共享一些纯文本。问题是,如果我启动分享文本的意图,对话框中的应用程序太多了。自定义共享对话框

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

2)如果没有,我可以进行自定义对话框。如果是这样,我可以专门选择一个应用程序来启动并提供我的意图吗?对于每个对话选项,我会启动一个特定的应用程序。第一个项目 - 电子邮件,第二个项目 - 的Facebook等

enter image description here

回答

2

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

您无法修改操作系统使用应用选择器创建的此列表。 (我猜,所有这些应用程序的接受很常见数据类型“text/plain的”)。

2)如果不是这样,我可以让一个自定义对话框。如果是这样,我可以专门选择一个应用程序来启动并提供我的意图吗?对于每个对话选项,我会启动一个特定的应用程序。第一个项目 - 电子邮件,第二个项目 - 的Facebook等

至于构建自己的自定义列表,你需要考虑几点:

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

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

  • 我不知道任何特定的Facebook MIME类型,您将不得不使用“text/plain”。另外,您也可以使用PackageManager搜索每一个安装appfor字符串“脸谱”,然而第三方Facebook应用程序可能没有此字符串包的名称....

如果你要使用“文本/纯文本”数据类型,那么你将最终列出操作系统已经自动为你创建...

你想要做什么并不是不可能的,但它比听起来更难。最后,你不小心可能会从您的自定义列表中排除用户最喜爱的应用程序...

(Android已经对这个问题有见地的博客:Sharing with Intents

+0

谢谢你的精心答案。 – Buffalo 2012-08-09 07:06:21