Android 特定的 MIME 类型列表?

标签 android mime-types

我被要求为我的一个 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...

有点有效,尽管我的列表中也有电子邮件客户端...

我的问题:

  1. 是否有可供我们使用的特定于 Android 的 MIME 类型的列表?从我找到的示例中,“vnd.android-dir/mms-sms”对我来说似乎是凭空而来的。
  2. 是否有正确的方法来仅获取消息传递客户端(即不是邮件客户端)——或者这在 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/

相关文章:

html - 分段上传表单 : Is order guaranteed?

php - 我应该为 mp3 使用哪种 mime 类型

javascript - 为什么我的 javascript 代码没有执行并且说不是有效的 mime 类型?

c# - Xamarin - 设置跨平台 Hello World App

android - SQLite 语法错误

android - 是否在 Android 上使用多个 Activity 实例?

google-apps-script - 用于创建 Google 文档的 Mimetype(使用 Google 脚本)在某些实例中工作,在其他实例中不起作用

请求中未接受的 Content-Type 的 HTTP 状态代码

android - 如何在具有 armeabi-v7a 架构的手机上测试为 arm64-v8a 架构编译的应用程序?

java - 通过后退按钮从其他 Activity 更新 Recyclerview onResume 的一项的正确方法