我被要求为我的一个 Android 应用程序添加一个“分享”方法,允许用户通过 1) Facebook 2) SMS 和 3) 电子邮件分享
在研究过程中,我发现要允许用户从“消息”应用程序中进行选择,我需要创建以下 Intent:
Intent messageIntent = new Intent(Intent.ACTION_SEND);
messageIntent.putExtra(Intent.EXTRA_SUBJECT, title);
messageIntent.putExtra(Intent.EXTRA_TEXT, content);
messageIntent.setType("vnd.android-dir/mms-sms");
// title and content set elsewhere...
这有点有效,尽管我的列表中也有电子邮件客户端...
我的问题:
- 是否有可供我们使用的特定于 Android 的 MIME 类型的列表?从我找到的示例中,“vnd.android-dir/mms-sms”对我来说似乎是凭空而来的。
- 是否有正确的方法来仅获取消息传递客户端(即不是邮件客户端)——或者这在 Android 中几乎不可能做到。
免责声明:上面的代码 fragment 是从另一个 SO 帖子中找到的。也许这只是我在谷歌的失败 - 但我似乎无法在合法的 Android 开发者网站上找到任何文档,其中列出了这是执行此操作的正确方法,或者我的选择是什么。
最佳答案
I have been asked to add a "share" method to one of my Android applications which allows users to share by 1) Facebook 2) SMS and 3) Email
请允许用户share how the users want ,这可能会也可能不会通过这些方式。
I have found that to allow users to select from "messaging" applications, I need to create the following Intent
不,这允许用户通过恰好支持该未记录和不受支持的 MIME 类型的任何应用程序进行共享。并非每个“消息传递”应用程序都必须支持该 MIME 类型,欢迎非“消息传递”应用程序支持该 MIME 类型。
Is there a list somewhere of the Android specific MIME types that are available for us to use?
不是真的,因为通常它们没有记录或记录不足(例如,常量出现在某处而没有解释)。
The "vnd.android-dir/mms-sms" seemed pulled out of thin air to me from the example I found.
它可能来自the Android source code .
Is there the proper way to get ONLY messaging clients (ie. not mail clients) - or is that pretty much impossible to do in Android.
地球上大约有 70 亿人。欢迎他们每个人对什么是“消息客户端”、什么是“邮件客户端”等有不同的想法。这些是描述性营销术语,而不是技术定义。
ACTION_SEND
用于通过 MIME 类型共享内容。任何应用程序都可以提供对任何给定 MIME 类型的 ACTION_SEND
支持,因为任何应用程序的开发人员都可以编写他们想要的内容。任何给定的应用程序是“消息客户端”、“邮件客户端”还是其他应用程序都取决于最终用户。你没有办法读懂用户的想法,也没有任何法律手段来阻止其他程序员编写他们想要的东西。
现在,有各种 script-kiddie hacks 可以通过应用程序 ID(也称为程序包名称)将共享列表限制为某些应用程序。然而,虽然只有一个 Facebook(虽然我记得他们有几个应用程序),但有很多短信和电子邮件应用程序,如果不是不可能的话,你也很难列出所有这些应用程序他们,更不用说随着时间的推移维护该列表了。
我的强烈建议是对您的内容进行有用的格式化,并允许用户使用他们希望的应用共享该内容。
关于Android 特定的 MIME 类型列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30407452/