-2

SMS アプリケーションを作成しました。メッセージの長さが 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;

}

私を助けてください

4

2 に答える 2

1

SMS =ショートメッセージ サービス。「ショート」は 160 文字以下です。さらに送信する場合は、メッセージを 2 つ以上の部分に分割します。

于 2013-10-19T02:46:15.127 に答える
1

デフォルトでは、SMS の最大長は 160 文字のみです

SMS でのSHORTの意味 = 「SHORT MESSAGING SERVICE」

それでも 160 文字を超えて送信する場合は、2 つに分割するか、MMS に変換する必要があります

そのため、if条件を使用して、長さが 160 文字を超えているかどうかを確認します

于 2013-10-19T02:48:10.537 に答える