我正在尝试获得类似于以下内容的共享对话框,以便与预先选择的应用列表(电子邮件,Facebook,Twitter,Google +)共享一些纯文本。问题是,如果我发起一个共享文本的意图,那么该对话框的应用程序太多了。
1)我可以明确选择对话框中显示的应用吗?
2)如果没有,我可以进行自定义对话。如果是这样,我可以专门选择一个应用程序来启动并提供我的意图吗?对于每个对话框选项,我都会启动一个特定的应用程序。第一项 - 电子邮件,第二项 - 脸谱等。
答案 0 :(得分:2)
1)我可以明确选择对话框中显示的应用程序吗?
您无法修改操作系统使用应用选择器创建的此列表。 (我猜这些应用都接受非常常见的数据类型“text / plain”。)
2)如果没有,我可以进行自定义对话。如果是这样,我可以专门选择一个应用程序来启动并提供我的意图吗?对于每个对话框选项,我都会启动一个特定的应用程序。第一项 - 电子邮件,第二项 - 脸谱等。
至于构建自己的自定义列表,您需要考虑以下几点:
您可以创建明确打开GMail和Facebook应用程序的Intents,但有些用户不使用这些特定应用程序。相反,您应该显示接受特定数据类型(或MIME类型)的应用程序。
电子邮件应用具有特定的MIME类型:“message / rfc822”,但有些不使用它。使用“text / plain”可能更安全。
我不知道任何特定的Facebook MIME类型,无论如何你都必须使用“text / plain”。或者,您可以使用PackageManager在每个已安装的应用程序中搜索字符串“facebook”,但第三方Facebook应用程序可能没有在其包名中包含此字符串....
如果您打算使用“text / plain”数据类型,那么您最终将获得操作系统已自动为您创建的列表...
你想要做的并非不可能,但它比听起来更难。最后,您不小心可能会从自定义列表中排除用户最喜欢的应用程序...
(Android在此主题上有一个富有洞察力的博客:Sharing with Intents。)