2013-01-24 23 views
0

我想與更多的160個字符發送短信,但我只有用多一個問題...如何發送短信多..更多的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); 

} 
+0

嘿我想我寫了你兩遍:請在標題中提出標籤並記住接受答案。 – rekire

+0

看看這些問題:http://stackoverflow.com/questions/1981430/sending-long-sms-messages http://stackoverflow.com/questions/4306020/android-receiving-long-sms-multipart和這裏在Android coockbook:http://androidcookbook.com/Recipe.seam;jsessionid=4B89EE37727BFF894F628909DBBEB0BB?recipeId=2686 –

回答

0
ArrayList<String> parts = (ArrayList<String>) splitInChunks(smsText, 120); 
    for (String str : parts) { 
     smsManager.sendTextMessage(phoneNumber, null, str, null, null); 
    } 


    /* Split message in chunks */ 
    public static List<String> splitInChunks(String id, int chunkSize) { 
    ArrayList<String> result = new ArrayList<String>(); 
    int length = id.length(); 
    for (int i = 0, j = 1; i < length; j++, i += chunkSize) { 
    result.add(SMSPRETAG + j + "," + id.substring(i, Math.min(length, i + chunkSize))); 
    } 
    return result; 

}

如果您希望更健壯,可以爲每個塊添加一些唯一的ID。

1
SmsManager sms = SmsManager.getDefault(); 

ArrayList parts = sms.divideMessage(message); sms.sendMultipartTextMessage(phoneNumber,null,parts,null,null);