Android 如何发送短信多部分。。超过160个字符

Android 如何发送短信多部分。。超过160个字符,android,android-activity,smsmanager,Android,Android Activity,Smsmanager,我想发送超过160个字符的短信,但我只有一个多部分的问题 //---sends a SMS message to another device--- public void sendSMS(String phoneNumber, String message, final String Id) { String SENT = "SMS_SENT"; String DELIVERED = "SMS_DELIVERED"; PendingIntent sent

我想发送超过160个字符的短信,但我只有一个多部分的问题

//---sends a SMS message to another device---
public void sendSMS(String phoneNumber, String message, final String Id)
{      

    String SENT = "SMS_SENT";
    String DELIVERED = "SMS_DELIVERED";

    PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,
        new Intent(SENT), 0);

    PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
        new Intent(DELIVERED), 0);

    //---when the SMS has been sent---
    registerReceiver(new BroadcastReceiver(){
        @Override
        public void onReceive(Context arg0, Intent arg1) {
            switch (getResultCode())
            {
                case Activity.RESULT_OK:
                    //Toast.makeText(getBaseContext(), "SMS sent",Toast.LENGTH_SHORT).show();
                    getServerData("http://site.com","id",Id);

                    break;
                case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                    //Toast.makeText(getBaseContext(), "Generic failure", Toast.LENGTH_SHORT).show();
                    break;
                case SmsManager.RESULT_ERROR_NO_SERVICE:
                    //Toast.makeText(getBaseContext(), "No service", Toast.LENGTH_SHORT).show();
                    break;
                case SmsManager.RESULT_ERROR_NULL_PDU:
                    //Toast.makeText(getBaseContext(), "Null PDU", Toast.LENGTH_SHORT).show();
                    break;
                case SmsManager.RESULT_ERROR_RADIO_OFF:
                    //Toast.makeText(getBaseContext(), "Radio off", Toast.LENGTH_SHORT).show();
                    break;
            }
        }
    }, new IntentFilter(SENT));

    //---when the SMS has been delivered---
    registerReceiver(new BroadcastReceiver(){
        @Override
        public void onReceive(Context arg0, Intent arg1) {
            switch (getResultCode())
            {
                case Activity.RESULT_OK:
                    //Toast.makeText(getBaseContext(), "SMS delivered", Toast.LENGTH_SHORT).show();
                    break;
                case Activity.RESULT_CANCELED:
                   // Toast.makeText(getBaseContext(), "SMS not delivered", Toast.LENGTH_SHORT).show();
                    break;                      
            }
        }
    }, new IntentFilter(DELIVERED)); 


  /*
                 Don't work
  SmsManager sms = SmsManager.getDefault();
  ArrayList<String> parts = sms.divideMessage(message);
  sms.sendMultipartTextMessage(phoneNumber, null, parts, null, null);
  */


  /* WORK FINE, BUT 160 chars limited */

  SmsManager sms = SmsManager.getDefault();
  sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);  

}
/---向其他设备发送SMS消息---
公共无效发送SMS(字符串电话号码、字符串消息、最终字符串Id)
{      
String SENT=“SMS_SENT”;
String DELIVERED=“SMS_DELIVERED”;
PendingEvent sentPI=PendingEvent.getBroadcast(这个,0,
新意图(已发送),0);
PendingEvent deliveredPI=PendingEvent.getBroadcast(此,0,
新意向(已交付),0);
//---当短信已经发送---
registerReceiver(新广播接收器(){
@凌驾
公共void onReceive(上下文arg0,意图arg1){
开关(getResultCode())
{
案例活动。结果\u正常:
//Toast.makeText(getBaseContext(),“SMS已发送”,Toast.LENGTH_SHORT.show();
getServerData(“http://site.com","id","id",;
打破
案例smsmsmanager.RESULT\u错误\u一般\u失败:
//Toast.makeText(getBaseContext(),“泛型失败”,Toast.LENGTH_SHORT.show();
打破
案例smsmsmanager.RESULT\u错误\u否\u服务:
//Toast.makeText(getBaseContext(),“无服务”,Toast.LENGTH_SHORT.show();
打破
案例smsmsmanager.RESULT_ERROR_NULL_PDU:
//Toast.makeText(getBaseContext(),“Null PDU”,Toast.LENGTH_SHORT.show();
打破
案例smsmsmanager.RESULT\u ERROR\u RADIO\u OFF:
//Toast.makeText(getBaseContext(),“无线电关闭”,Toast.LENGTH_SHORT.show();
打破
}
}
},新意向过滤器(已发送));
//---短信发送完毕后---
registerReceiver(新广播接收器(){
@凌驾
公共void onReceive(上下文arg0,意图arg1){
开关(getResultCode())
{
案例活动。结果\u正常:
//Toast.makeText(getBaseContext(),“SMS传递”,Toast.LENGTH_SHORT.show();
打破
案例活动.RESULT\u已取消:
//Toast.makeText(getBaseContext(),“SMS未送达”,Toast.LENGTH_SHORT.show();
打破
}
}
},新IntentFilter(已交付);
/*
不工作
SmsManager sms=SmsManager.getDefault();
ArrayList parts=sms.divideMessage(消息);
sendMultipartTextMessage(电话号码,空,部件,空,空);
*/
/*工作很好,但160个字符有限*/
SmsManager sms=SmsManager.getDefault();
sendTextMessage(电话号码、空、消息、sentPI、deliveredPI);
}
ArrayList parts=(ArrayList)splitInChunks(smsText,120);
用于(字符串str:parts){
sendTextMessage(电话号码,null,str,null,null);
}
/*将消息分块*/
公共静态列表SplitInChunk(字符串id,int chunkSize){
ArrayList结果=新建ArrayList();
int length=id.length();
for(int i=0,j=1;i
}

如果您想变得更健壮,可以为每个块添加一些唯一的ID。

SmsManager sms=SmsManager.getDefault();
SmsManager sms = SmsManager.getDefault();
ArrayList<String> parts = sms.divideMessage(message);
sms.sendMultipartTextMessage(phoneNumber, null, parts, null, null);
ArrayList parts=sms.divideMessage(消息); sendMultipartTextMessage(电话号码,空,部件,空,空);

sendMultipartTextMessage
将发送所需数量的消息,直到所有部分都发送完毕。

嘿,我想我已经写了两遍了:请关闭标题中的标签并记住接受答案。看看这些问题:在Android coockbook中:
SmsManager sms = SmsManager.getDefault();
ArrayList<String> parts = sms.divideMessage(message);
sms.sendMultipartTextMessage(phoneNumber, null, parts, null, null);