我正在尝试找到一种方法来发送包含vCard 附件的 MMS 消息。我认为这将是一项相当容易的任务,但我仍然没有设法想出适用于各种 Android 手机的东西。
我尝试的第一件事是:
定义显示能够发送 vCard 的应用程序列表的意图
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("text/x-vcard");
i.putExtra(Intent.EXTRA_TEXT,"MMS with vCard");
i.putExtra(Intent.EXTRA_STREAM, Uri.parse (someFilereference);
startActivity(Intent.createChooser(i, "Select MMS application."));
使用它时,我注意到以下内容:
- 在三星 Galaxy S上,选择器允许我选择蓝牙、Gmail和消息应用程序。使用消息应用程序时,附件和文本存在,我可以发送彩信。我在旧的索尼爱立信手机(Android 之前)上处理了彩信,并且 vCard 处理得很好。
- 在Google Nexus S和Motorola DroidX上,选择器只允许我选择蓝牙和 Gmail。(选择器中缺少消息应用程序)。
(我的结论):Android 似乎没有能够满足此处指定的 Intent 的现有应用程序。(没有应用程序允许使用 text/x-vcard mimeType)。Galaxy S 带有自己的消息应用程序,能够处理 vcard mimetype。
这一切都很好,但是我们如何着手解决这个问题呢?
我尝试了以下方法:
通过指定类直接启动消息传递意图
Intent intent = new Intent(Intent.ACTION_SEND);
i.setClassName("com.android.mms", "com.android.mms.ui.ComposeMessageActivity");
i.setType("text/x-vcard");
i.putExtra("sms_body", "SomeText");
i.putExtra(Intent.EXTRA_STREAM, Uri.parse (someFileRef);
startActivity(i);
使用此代码,消息应用程序将直接启动。选择这种方法是因为它至少允许我们在 Nexus S 上弹出消息应用程序(在使用选择器之前,消息应用程序不存在)。
在三星 Galaxy S上,附件已添加到彩信撰写屏幕并已正确发送。在Google Nexus S上,附件不存在。
从 Intent 中删除 mimeType 时,Messaging 应用会弹出Unsupported media type错误消息。
所以问题是:是否有一段简单而统一的代码可以让您发送带有 vCard 附件的彩信?