Отправка смс нескольким людям в андроид - PullRequest
7 голосов
/ 27 марта 2011

Я хочу знать, есть ли возможность отправлять смс множеству людей с помощью SmsManager.Я знаю, что могу запустить цикл через контакты и отправлять смс по отдельности, но я подумал, что может быть способ сделать это.

Код, который я использую, приведен ниже:

SmsManager.getDefault().sendTextMessage("PHONE_NOS", null,msg.getText().toString(), sentPI, deliveredPI);

PS: я пробовал использовать ";"в качестве разделителя.Но единственное, что происходит, это то, что он отправляет смс только первому человеку в списке.

Для людей, которые видят это поздно, невозможно отправить SMS нескольким людям.Как отметил Билл Мот, если бы это было возможно, был бы API, который бы использовал «Список чисел» в качестве аргумента.Поэтому единственно возможное решение - иметь итератор для чисел и отправлять их по одному.

Ответы [ 2 ]

10 голосов
/ 27 марта 2011

Сеть net-net-net в данном случае невозможна без итерации цикла и отправки 1 сообщения 1 адресату.

Я потратил 1/2 субботы, пытаясь сделать то же самое.Я не мог заставить его работать с ";", ",", "" или "\ n".Я должен был сначала попробовать жестко запрограммировать 2 адресата, разделенных всеми разделителями, но я получил ценный урок об Android SDK: если они хотят, чтобы вы отправляли более чем 1 адресату за раз, то они принимают ArrayList илимассив строк, а не единственная строка;)

protected void sendMsg(Context context, SmsMessage smsMessage) {
        SmsManager smsMgr = SmsManager.getDefault();
        ArrayList<string> smsMessageText = smsMgr.divideMessage(smsMessage.getMsgBody());
        PendingIntent sentPI = PendingIntent.getBroadcast(context, 0, new Intent("SMS_SENT"), 0);
        PendingIntent deliveredPI = PendingIntent.getBroadcast(context, 0, new Intent("SMS_DELIVERED"), 0);
        int AddresseesPerMessage = 10;
        StringBuilder builder = new StringBuilder();
        String delim = "";
        for (ContactItem c:smsMessage.getAddresseeList()) {
            //  For every phone number in our list
            builder.append(delim).append(c.getPhoneNumber().toString());
            delim=";";
            if (((smsMessage.getAddresseeList().indexOf(c)+1) % AddresseesPerMessage) == 0 || smsMessage.getAddresseeList().indexOf(c)+1 == smsMessage.getAddresseeList().size()) {
                // using +1 because index 0 mod 9 == 0 
                for(String text : smsMessageText){
                    //  Send 160 bytes of the total message until all parts are sent
                    smsMgr.sendTextMessage(builder.toString(), null, text, sentPI, deliveredPI);
                }
                builder.setLength(0);
                delim="";
            }
        }
    }
9 голосов
/ 25 июля 2012

Это может быть полезно для вас.

public void onCreate(Bundle savedInstanceState)
 {
    super.onCreate(savedInstanceState);

      setContentView(R.layout.main);
      btnSendSMS = (Button) findViewById(R.id.btnSendSMS);
      btnSendSMS.setOnClickListener(new View.OnClickListener()
      {
         public void onClick(View v)
          {
            Intent i = new Intent(android.content.Intent.ACTION_VIEW);
             i.putExtra("address", "5556; 5558; 5560");
             // here i can send message to emulator 5556,5558,5560
             // you can change in real device
             i.putExtra("sms_body", "Hello my friends!");
             i.setType("vnd.android-dir/mms-sms");
             startActivity(i);
     }
     });
 }

Добавить эту строку в AndroidManifest.xml

<uses-permission android:name="android.permission.SEND_SMS"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...