Android短信超过160个字符

时间:2014-09-01 10:51:02

标签: android sms

您好我正在尝试将短信发送到具有不同文本正文的不同手机号码,我的代码也发送超过160个字符的短信但它只向一个号码发送不是全部,现在我想向所有联系人发送多部分短信息list.pls帮助

private void sendSMS()

{
        if (list_phone.size()!=0){

            //new AddNewCategory().execute();
            for (i = 0; i < len; i++){


        SmsManager sm = SmsManager.getDefault();  
        ArrayList<String> message_parts = sm.divideMessage(list_MESSAGE_BODY.get(i));

       // Log.e("Message parts 3", message_parts.get(3));
       // Log.e("Message parts 4", message_parts.get(4));
        Intent iSent = new Intent();
        PendingIntent piSent = PendingIntent.getBroadcast(this, 0, iSent, 0);
        Intent iDel = new Intent();
        PendingIntent piDel = PendingIntent.getBroadcast(this, 0, iDel, 0);

        if (message_parts.size() == 1)
        {
            String msg = message_parts.get(0);
            sm.sendTextMessage(list_phone.get(i), null, msg, piSent, piDel);
            Toast.makeText(getApplicationContext(), " Message sent", Toast.LENGTH_SHORT).show();

        }
        else
        {
            ArrayList<PendingIntent> sentPis = new ArrayList<PendingIntent>();      
            ArrayList<PendingIntent> delPis = new ArrayList<PendingIntent>();       

            int ct = message_parts.size();
            for (int i = 0; i < ct; i++)
            {
                sentPis.add(i, piSent);
                delPis.add(i, piDel);
            }
            //Log.e("Message Parts", message_parts+"");
            Log.e("Phone list", list_phone.get(i));
            Log.e("Message parts"+i, message_parts.get(i));
            sm.sendMultipartTextMessage(list_phone.get(i), null, message_parts, sentPis, delPis);
            Toast.makeText(getApplicationContext(), " Message sent", Toast.LENGTH_SHORT).show();    

        }   
        }
        else
        {
            // Toast.makeText(getApplicationContext(), "Phone list is empty.. Message not sent", Toast.LENGTH_SHORT).show();    
        }



}

2 个答案:

答案 0 :(得分:0)

你需要添加“;”在每个号码之后。

我举一个例子,请检查并提供问题解决方案。

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 have SAMSUNG devices then  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="";
            }
        }
    }

答案 1 :(得分:0)

试试此代码

{
if (list_phone.size()!=0){

//new AddNewCategory().execute();
            for (i_m = 0; i_m < len; _mi++){
SmsManager sm = SmsManager.getDefault();  
        ArrayList&lt;String&gt; message_parts = sm.divideMessage(list_MESSAGE_BODY.get(i_m));
// Log.e("Message parts 3", message_parts.get(3));
       // Log.e("Message parts 4", message_parts.get(4));
        Intent iSent = new Intent();
        PendingIntent piSent = PendingIntent.getBroadcast(this, 0, iSent, 0);
        Intent iDel = new Intent();
        PendingIntent piDel = PendingIntent.getBroadcast(this, 0, iDel, 0);
if (message_parts.size() == 1)
{
            String msg = message_parts.get(0);
            sm.sendTextMessage(list_phone.get(i), null, msg, piSent, piDel);
            Toast.makeText(getApplicationContext(), " Message sent", Toast.LENGTH_SHORT).show();
}
        else
{
            ArrayList&lt;PendingIntent&gt; sentPis = new ArrayList&lt;PendingIntent&gt;();      
            ArrayList&lt;PendingIntent&gt; delPis = new ArrayList&lt;PendingIntent&gt;();       
int ct = message_parts.size();
            for (int i_t = 0; i_t < ct; i_t++)
{
                sentPis.add(i_t, piSent);
                delPis.add(i_t, piDel);
            }
            //Log.e("Message Parts", message_parts+"");
            Log.e("Phone list", list_phone.get(i));
            Log.e("Message parts"+i, message_parts.get(i_m));
            sm.sendMultipartTextMessage(list_phone.get(i), null, message_parts, sentPis, delPis);
            Toast.makeText(getApplicationContext(), " Message sent", Toast.LENGTH_SHORT).show();
}   
        }
        else
{
            // Toast.makeText(getApplicationContext(), "Phone list is empty.. Message not sent", Toast.LENGTH_SHORT).show();    
        }
}