2013-10-19 85 views
-2

我發短信的應用程序,如果消息長度爲< 160,它運行良好,但是當消息長度超過160時,模擬器表示應用程序強制關閉, 修復? 這裏是我的代碼..如果超過160個字符不能發送短信

private void kirimSMS(String string1, String string2) { 
    pi1 = PendingIntent.getBroadcast(this, 0, new Intent("SMS_SENT"), 0); 
    pi2 = PendingIntent.getBroadcast(this, 0, new Intent("SMS_DELIVERED"), 
      0); 
    sendBroadcastReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      // TODO Auto-generated method stub 
      switch (getResultCode()) { 

      case Activity.RESULT_OK: 
Toast.makeText(KirimSMS.this.getBaseContext(), 
     "SMS terkirim", Toast.LENGTH_SHORT).show(); 
     break; 
     case SmsManager.RESULT_ERROR_GENERIC_FAILURE: 
     Toast.makeText(KirimSMS.this.getBaseContext(), 
     "Gagal Kirim", Toast.LENGTH_SHORT).show(); 
     break; 
case SmsManager.RESULT_ERROR_NO_SERVICE: 
Toast.makeText(KirimSMS.this.getBaseContext(), 
"No Services", Toast.LENGTH_SHORT).show(); 
break; 
case SmsManager.RESULT_ERROR_NULL_PDU: 
Toast.makeText(KirimSMS.this.getBaseContext(), "No PDU", 
Toast.LENGTH_SHORT).show(); 
break; 
case SmsManager.RESULT_ERROR_RADIO_OFF: 

Toast.makeText(KirimSMS.this.getBaseContext(), "Radio Off", 
Toast.LENGTH_SHORT).show(); 
break; 
} 
}}; 
deliveryBroadcastReceiver = new BroadcastReceiver() { 
@Override 
public void onReceive(Context context, Intent intent) { 
// TODO Auto-generated method stub 
    switch (getResultCode()) { 
    case Activity.RESULT_OK: 
    Toast.makeText(KirimSMS.this.getBaseContext(), 
    "Pesan terkirim", Toast.LENGTH_SHORT).show(); 
    break; 
    case Activity.RESULT_CANCELED: 
    Toast.makeText(KirimSMS.this.getBaseContext(), 
    "Pesan Tidak terkirim", Toast.LENGTH_SHORT).show(); 
    break; 
    } 
    } 
    }; 
    registerReceiver(deliveryBroadcastReceiver, new IntentFilter(DELIVERED)); 
    registerReceiver(sendBroadcastReceiver, new IntentFilter(SENT)); 

//SmsManager.getDefault().sendTextMessage(string1, null, string2, pi1,pi2); 
SmsManager smsManager = SmsManager.getDefault(); 
ArrayList<String> parts = smsManager.divideMessage(stringIsiPesan); 
smsManager.sendMultipartTextMessage(stringNoHp, null, parts, null, null); 
} 
@Override 
public void onClick(View v) { 
// TODO Auto-generated method stub 
switch (v.getId()) { 
case R.id.btnEnkripsi: 
if (cekField()) { 
String kunci = null; 
String hasil = null; 
if (MainActivity.DEFAULT_KEY.equals("")) 
    kunci = "ABCD"; 
    else 
    kunci = MainActivity.DEFAULT_KEY; 
    Kriptoku enktripsi = new Kriptoku(); 

hasil = enktripsi.enkripsibaru(txtPesan.getText().toString(),kunci); 

txtPesan.setText(hasil); 
btnEnkripsi.setEnabled(false); 
} else { 
AlertDialog.Builder loBuilder2 = new AlertDialog.Builder(this);loBuilder2 
.setMessage("lengkapi data..") 
.setTitle("Oo..Oo..") 
.setPositiveButton("OK", 
new DialogInterface.OnClickListener() 
{ 
@Override 
public void onClick(DialogInterface dialog, 
int which) { 
// TODO Auto-generated method stub 
} 
}); 

loBuilder2.create(); 
loBuilder2.show(); 
} 

break; 
case R.id.btnKirimPesan: 
//if (txtPesan.length() <= 160) { 
if (cekField()) { 
kirimSMS(this.txtNoHp.getText().toString(), this.txtPesan.getText().toString()); 
dao = SQLiteDAO.getInstance(this, 
new Class[] { Outbox.class }); 
Outbox localSMS = new Outbox(); 
localSMS.setNoHp(this.txtNoHp.getText().toString()); 
localSMS.setPesan(this.txtPesan.getText().toString()); 
SimpleDateFormat localSimpleDateFormat = new SimpleDateFormat("HH:mm, dd MMM yyyy"); 
Calendar localCalendar = Calendar.getInstance(); 
localSMS.setTime(localSimpleDateFormat.format(localCalendar.getTime())); 

dao.insert(localSMS); 
finish(); 

} else { 
AlertDialog.Builder loBuilder1 = new AlertDialog.Builder(this); 
loBuilder1 
.setMessage("Lengkapi Data") 
.setTitle("Aduuhh...") 
.setPositiveButton("OK", 
new DialogInterface.OnClickListener() { 

public void onClick{ DialogInterface dialog,int which) { 
//TODO Auto-generated method stub 
} 
}); 
loBuilder1.create(); 
loBuilder1.show(); 
} 
} //else { 
    // Toast.makeText(this, String.valueOf("Karakter lebih dari 160"), Toast.LENGTH_LONG).show(); 
    //return; 
    // break; 

} 

請幫我

+3

默認短信的最大長度可以只有160個字符 –

+0

你還記得那件事嗎?當你給某人發送消息時,如果你的角色超過了160,那麼第一個頁面會變成2.例如,它不會去161(1),它將會像1(2) – CRazyProgrammer

+0

那樣如何發送消息作爲多部分消息? – user2810271

回答

1

短信= 消息服務,其中 '短' 是160個字符或更少。如果您想發送更多信息,請將該信息分爲兩個或更多個部分。

+0

如何發送消息爲多部分?我使用了SmsManager.sendMultipartTextMessage,但它不起作用。 – user2810271

1

默認短信的最大長度只能是160個字符

什麼SHORT意味着短信=「短信息服務」

如果你仍然要發送超過160個字符,你需要把它分成兩個或將其轉換成MMS

所以使用if條件檢查長度大於160個字符

相關問題