3

我正在尝试获取类似于下面的共享对话框,以便与预选的应用程序列表(电子邮件、Facebook、Twitter、Google+)共享一些纯文本。问题是,如果我启动共享文本的意图,则对话框中的应用程序太多。

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

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

在此处输入图像描述

4

1 回答 1

2

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

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

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

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

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

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

  • 我不知道任何特定的 Facebook MIME 类型,无论如何您都必须使用“文本/纯文本”。或者,您可以使用 PackageManager 在每个已安装的应用程序中搜索字符串“facebook”,但是第三方 Facebook 应用程序的包名称中可能没有此字符串......

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

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

(Android 有一个关于这个主题的有见地的博客:与 Intents 共享。)

于 2012-08-08T17:07:29.407 回答