在Android中发送多个短信

时间:2013-08-11 09:03:00

标签: android sms smsmanager

我正在创建一个可以向一个收件人发送多条短信(所有文本都相同)的应用。目前,该应用的设置很差,可以同时发送5条消息。

以下是我用来发送5条短信息的内容。是否有更好的方法来发送多条消息,以及将消息存储在用户收件箱中的更好方法?因为一遍又一遍地复制和粘贴相同的东西真的很混乱。谢谢!

public void function1(int id){ 
            String phoneNo = phoneInput.getText().toString();
            String sms = textSMS.getText().toString();
            try {
                Toast.makeText(getApplicationContext(),getString(R.string.sentMessages), Toast.LENGTH_LONG).show();
                SmsManager smsManager = SmsManager.getDefault();
                smsManager.sendTextMessage(phoneNo, null, sms, null, null);
                smsManager.sendTextMessage(phoneNo, null, sms, null, null);
                smsManager.sendTextMessage(phoneNo, null, sms, null, null);
                smsManager.sendTextMessage(phoneNo, null, sms, null, null);
                smsManager.sendTextMessage(phoneNo, null, sms, null, null);
                SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
                final boolean save = prefs.getBoolean("addvalues", true);
                if(save){
                    ContentValues values = new ContentValues();                       
                    values.put("address", phoneNo);                               
                    values.put("body", sms);
                    getContentResolver().insert(Uri.parse("content://sms/sent"), values); 
                    getContentResolver().insert(Uri.parse("content://sms/sent"), values); 
                    getContentResolver().insert(Uri.parse("content://sms/sent"), values); 
                    getContentResolver().insert(Uri.parse("content://sms/sent"), values); 
                    getContentResolver().insert(Uri.parse("content://sms/sent"), values);  
                }
              } catch (Exception e) {
                  Toast.makeText(getApplicationContext(),getString(R.string.messageNotSent), Toast.LENGTH_LONG).show();
                e.printStackTrace();
              } 

1 个答案:

答案 0 :(得分:1)

暂且不论你的应用程序看起来像垃圾邮件机器人,我就是这样实现的。

使用forwhile循环可能就是您要找的。

noSends是您希望发送消息的次数)

public void sendMultiple(int noSends){ 

    String phoneNo = phoneInput.getText().toString();
    String sms = textSMS.getText().toString();

    try 
    {
        SmsManager smsManager = SmsManager.getDefault();

        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

        for(int i = noSends; i != 0; i--)
        {
            smsManager.sendTextMessage(phoneNo, null, sms, null, null);
        }

        if( prefs.getBoolean("addvalues", true) )
        {
            ContentValues values = new ContentValues();
            values.put("address", phoneNo);
            values.put("body", sms);

            while(noSends != 0)
            {
                 getContentResolver().insert(Uri.parse("content://sms/sent"), values);
                 noSends--;
            }
        }
    } 
    catch (Exception e) 
    {
        Toast.makeText(getApplicationContext(),getString(R.string.messageNotSent), Toast.LENGTH_LONG).show();
        e.printStackTrace();
    {
    else
    {
        Toast.makeText(getApplicationContext(),getString(R.string.sentMessages), Toast.LENGTH_LONG).show();
    }
}