以编程方式发送短信而无需打开消息应用

时间:2014-10-11 04:58:28

标签: android android-activity

到目前为止,我使用以下代码通过我的应用将短信发送到另一部手机。

Intent intent = new Intent( Intent.ACTION_VIEW, Uri.parse( "sms:" + srcNumber)); 
                    intent.putExtra( "sms_body", message ); 
                    startActivity(intent);

然而,这会打开本机消息传递应用程序,从而将我的应用程序活动置于后台。是否可以直接发送SMS 而无需打开本机消息传递应用程序?如果是,怎么样?

6 个答案:

答案 0 :(得分:95)

您可以通过以下方式从您的应用程序发送消息:

public void sendSMS(String phoneNo, String msg) {
    try {      
        SmsManager smsManager = SmsManager.getDefault();
        smsManager.sendTextMessage(phoneNo, null, msg, null, null);    
        Toast.makeText(getApplicationContext(), "Message Sent",
              Toast.LENGTH_LONG).show();
    } catch (Exception ex) {
        Toast.makeText(getApplicationContext(),ex.getMessage().toString(),
              Toast.LENGTH_LONG).show();
        ex.printStackTrace();
    } 
}

此外,您需要在SEND_SMS中授予AndroidManifest.xml权限才能发送消息

<uses-permission android:name="android.permission.SEND_SMS" />

答案 1 :(得分:14)

public void sendLongSMS() {
    String phoneNumber = "0123456789";
    String message = "Hello World! Now we are going to demonstrate " + 
        "how to send a message with more than 160 characters from your Android application.";
    SmsManager smsManager = SmsManager.getDefault();
    ArrayList<String> parts = smsManager.divideMessage(message); 
    smsManager.sendMultipartTextMessage(phoneNumber, null, parts, null, null);
}

并且不要忘记添加

<uses-permission android:name="android.permission.SEND_SMS"/>

答案 2 :(得分:6)

发送带有权限请求的短信:

添加清单:

<uses-permission android:name="android.permission.SEND_SMS" />

添加Java功能:

void sendSmsMsgFnc(String mblNumVar, String smsMsgVar)
{
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS) == PackageManager.PERMISSION_GRANTED)
    {
        try
        {
            SmsManager smsMgrVar = SmsManager.getDefault();
            smsMgrVar.sendTextMessage(mblNumVar, null, smsMsgVar, null, null);
            Toast.makeText(getApplicationContext(), "Message Sent",
                    Toast.LENGTH_LONG).show();
        }
        catch (Exception ErrVar)
        {
            Toast.makeText(getApplicationContext(),ErrVar.getMessage().toString(),
                    Toast.LENGTH_LONG).show();
            ErrVar.printStackTrace();
        }
    }
    else
    {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
        {
            requestPermissions(new String[]{Manifest.permission.SEND_SMS}, 10);
        }
    }

}

答案 3 :(得分:4)

是的,找到了我自己的问题的答案:)

使用以下代码:

 SmsManager sms = SmsManager.getDefault();
                     sms.sendTextMessage(srcNumber, null, message, null, null);

这需要在android manifest xml上声明以下权限。

  <uses-permission android:name="android.permission.SEND_SMS"/>

答案 4 :(得分:2)

SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNo, null, sms, null, null);

答案 5 :(得分:2)

具有发送带有发送报告的短信的完整功能。

True