在不打开选择器的情况下从Android应用程序发送SMS消息?

时间:2013-01-10 15:12:03

标签: android sms android-implicit-intent

在我的Android应用程序中,我已经使用以下代码实现了发送短信。

   Intent smsIntent = new Intent(Intent.ACTION_VIEW);

    smsIntent.putExtra("sms_body", "Hello World!"); 
    smsIntent.putExtra("address", "0123456789");
    smsIntent.setType("vnd.android-dir/mms-sms");

    startActivity(smsIntent);

我的问题是,如果我在设备上有多个SMS应用程序,它会打开选​​择器以选择发件人应用程序。我不希望打开选择器;我想从Android的原生短信应用程序发送,而无需打开选择器。因此,任何帮助实现这一目标都将受到赞赏。

2 个答案:

答案 0 :(得分:5)

  

在我的Android应用程序中,我已经使用以下代码实现了发送短信。

这不是发送短信的正确方法。请使用ACTION_SENDACTION_SENDTO(后者使用smsto: Uri)。您可能会遇到可以发送SMS消息但不响应您正在使用的特定Intent结构的设备,因为这不是发送SMS消息的方式。

  

我不希望打开选择器

如果您的用户选择安装另一个SMS客户端,他们有权使用它,因为它是他们的设备,他们的短信费用等。用户可以选择让您的应用程序成为您的{{1的默认设置如果用户选择这样做,那么用户将不会一直向用户显示选择器。

  

我想从Android Native SMS应用程序发送而不打开选择器

不同的设备可以拥有不同的“本地短信应用”,由设备制造商提供,因此您无法确定什么是“原生短信应用”。而且,正如我之前提到的,“原生SMS应用程序”可能甚至无法响应您正在使用的那种奇怪的Intent结构。

答案 1 :(得分:1)

使用短信管理器?

http://developer.android.com/reference/android/telephony/SmsManager.html

void    sendTextMessage(String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent)

发送基于短信的文字。