Отправить несколько смс в Android

Я делал приложение, которое могло отправлять несколько смс-сообщений (все с одним и тем же текстом) одному получателю. В настоящее время приложение имеет довольно плохую настройку для отправки 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();
              } 

person user1798956    schedule 11.08.2013    source источник
comment
Что такое приложение? На первый взгляд это похоже на программу для рассылки спама.   -  person avitex    schedule 11.08.2013
comment
Почему бы не использовать циклы и массивы?   -  person abbath    schedule 11.08.2013
comment
вы делаете это грязным. почему ты так много повторяешь. Как сказал @abbath, используйте циклы и массив.   -  person Sandeep    schedule 11.08.2013


Ответы (1)


Если отложить ваше приложение в сторону, это похоже на спам-бота, вот как бы я его реализовал.

Использование цикла for или while, вероятно, то, что вы ищете.

(где 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();
    }
}
person avitex    schedule 11.08.2013
comment
Я попробую это спасибо. И приложение точно не спам-бот, я бы так никогда не сделал. Это просто небольшое приложение, чтобы разыграть своих друзей, а не навредить никому. - person user1798956; 11.08.2013
comment
@ user1798956 Нет проблем. Если это работает, способ показать другим пользователям, что это правильно, и сказать спасибо, состоит в том, чтобы отметить этот ответ как правильный. - person avitex; 11.08.2013
comment
Есть одна проблема, которую я нашел с этим. Всякий раз, когда вы пытаетесь отправить сообщение (независимо от того, выбираете ли вы контакт или нет), он будет говорить «Сообщение отправлено!». И если есть ошибка, все равно будет написано Сообщение отправлено! но также будет написано Невозможно отправить сообщение. Как я могу сделать так, чтобы было только сообщение "Сообщение отправлено"! когда он на самом деле посылает? - person user1798956; 12.08.2013
comment
@user1798956 user1798956 См. исправленный ответ выше. - person avitex; 12.08.2013