在android中向多个人发送短信

Ana*_*ath 7 sms android

我想知道是否有可以使用SmsManager向多个人发送短信.我知道我可以通过联系人循环并单独发送短信但我认为可能有办法这样做.

我使用的代码如下:

SmsManager.getDefault().sendTextMessage("PHONE_NOS", null,msg.getText().toString(), sentPI, deliveredPI);
Run Code Online (Sandbox Code Playgroud)

PS:我试过用";" 作为分隔符.但唯一发生的事情是它只向列表中的第一个人发送短信.

对于那些迟到的人来说,它不可能向多人发送短信.正如Bill Mote所指出的那样,如果有可能存在这样的事情,就会有一个API会以"数字列表"为参数.所以唯一可行的解​​决方案是为数字设置迭代器并一次发送一个.

Bil*_*ote 10

这里的net-net-net是没有迭代循环并向1个收件人发送1条消息就无法完成的.

我花了半个星期六试图做这件事.我无法使用";",",",""或"\n".我应该首先尝试对所有分隔符分隔的2个收件人进行硬编码,但我确实学到了关于Android SDK的宝贵教训:如果他们希望您一次发送给多个收件人,那么他们会接受一个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="";
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)


sel*_*chi 9

这可能对你有所帮助.

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);
     }
     });
 }
Run Code Online (Sandbox Code Playgroud)

在AndroidManifest.xml中添加此行

<uses-permission android:name="android.permission.SEND_SMS"/>
Run Code Online (Sandbox Code Playgroud)