发送短信时ACTION_SENDTO和ACTION_VIEW有什么区别?

时间:2010-07-27 05:56:30

标签: android

我有一个向指定联系人发送消息的应用程序。现在我用

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("smsto:" + phoneNumber));

发送消息,它在模拟器和我的N1上运行良好。我收到HTC用户的抱怨令人难以置信,当他们使用它时,他们会从android.mms应用程序中获得强制关闭。我做了更多挖掘,我发现有很多方法可以发送消息。例如

Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:" + phoneNumber));

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.putExtra("address", phoneNumber);
intent.setType("vnd.android-dir/mms-sms");

它们似乎在模拟器和我的设备上完全相同,我找不到任何关于正确的,通常支持的方式的官方信息。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

意图描述了你的意图。你想让我做什么?查看有关Intent http://developer.android.com/reference/android/content/Intent.html

的文档

在你的情况下,你想发送一些东西,所以ACTION_SENDTO听起来肯定比ACTION_VIEW(用于查看现有记录)更合适。

不幸的是,没有官方注册表可以获得什么意图 - OpenIntents的无所畏惧的人在http://www.openintents.org/en/intentstable开始了一个Wiki风格的注册表,但它的众包和非常不完整。最后,它是关于支持intent的应用程序如何处理它。

在您的情况下,标准的Android消息传递应用程序碰巧处理ACTION_VIEW,但HTC的自定义应用程序没有。我最好的建议是使用ACTION_SENDTO,并处理异常并显示错误消息。请记住,用户可能已安装第三方SMS应用程序。

答案 1 :(得分:-1)

我会尝试看看他们是如何在Contacts apps上完成的。

过去我与HTC Hero有很多兼容性问题。我总是用Sense UI编写适用于手机的代码。我发现如果代码在那里工作,它将适用于每个Android设备:)。