Java Can';如果超过160个字符,则不发送短信

Java Can';如果超过160个字符,则不发送短信,java,android,smsmanager,Java,Android,Smsmanager,我做了短信应用,如果消息长度小于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 I

我做了短信应用,如果消息长度小于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;

}
private void kirimSMS(字符串string1、字符串string2){
pi1=PendingEvent.getBroadcast(这个,0,新意图(“SMS_发送”),0);
pi2=PendingEvent.getBroadcast(此,0,新意图(“SMS_交付”),
0);
sendBroadcastReceiver=新的BroadcastReceiver(){
@凌驾
公共void onReceive(上下文、意图){
//TODO自动生成的方法存根
开关(getResultCode()){
案例活动。结果\u正常:
Toast.makeText(KirimSMS.this.getBaseContext(),
“SMS terkirim”,Toast.LENGTH_SHORT.show();
打破
案例smsmsmanager.RESULT\u错误\u一般\u失败:
Toast.makeText(KirimSMS.this.getBaseContext(),
“Gagal Kirim”,吐司。长度(短)。show();
打破
案例smsmsmanager.RESULT\u错误\u否\u服务:
Toast.makeText(KirimSMS.this.getBaseContext(),
“没有服务”,Toast.LENGTH_SHORT.show();
打破
案例smsmsmanager.RESULT_ERROR_NULL_PDU:
Toast.makeText(KirimSMS.this.getBaseContext(),“无PDU”,
吐司。长度(短)。show();
打破
案例smsmsmanager.RESULT\u ERROR\u RADIO\u OFF:
Toast.makeText(KirimSMS.this.getBaseContext(),“无线电关闭”,
吐司。长度(短)。show();
打破
}
}};
deliveryBroadcastReceiver=新的BroadcastReceiver(){
@凌驾
公共void onReceive(上下文、意图){
//TODO自动生成的方法存根
开关(getResultCode()){
案例活动。结果\u正常:
Toast.makeText(KirimSMS.this.getBaseContext(),
“Pesan terkirim”,Toast.LENGTH_SHORT.show();
打破
案例活动.RESULT\u已取消:
Toast.makeText(KirimSMS.this.getBaseContext(),
Toast.LENGTH_SHORT.show();
打破
}
}
};
registerReceiver(deliveryBroadcastReceiver,新意向过滤器(DELIVERED));
registerReceiver(sendBroadcastReceiver,新意向过滤器(SENT));
//SmsManager.getDefault().sendTextMessage(string1,null,string2,pi1,pi2);
SmsManager SmsManager=smsmsmanager.getDefault();
ArrayList parts=smsmsmanager.divideMessage(stringIsiPesan);
sendMultipartTextMessage(stringNoHp,null,parts,null,null);
}
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
开关(v.getId()){
案例R.id.btnEnkripsi:
if(cekField()){
字符串kunci=null;
字符串hasil=null;
if(MainActivity.DEFAULT_KEY.equals(“”)
kunci=“ABCD”;
其他的
kunci=MainActivity.DEFAULT_键;
Kriptoku enktripsi=新的Kriptoku();
hasil=enktripsi.enkripsibaru(txtPesan.getText().toString(),kunci);
txtPesan.setText(hasil);
btnEnkripsi.setEnabled(假);
}否则{
AlertDialog.Builder loBuilder2=新建AlertDialog.Builder(此);loBuilder2
.setMessage(“lengkapi数据…”)
.setTitle(“Oo..Oo..”)
.setPositiveButton(“确定”,
新建DialogInterface.OnClickListener()
{
@凌驾
公共void onClick(对话框接口对话框,
int(其中){
//TODO自动生成的方法存根
}
});
loBuilder2.create();
loBuilder2.show();
}
打破
案例R.id.btnKirimPesan:

//如果(txtPesan.length()SMS=Short消息服务,其中“Short”为160个字符或更少。如果要发送更多,请将消息分成两部分或更多部分。

默认情况下,SMS的最大长度只能为160个字符

这就是短消息在SMS=“短消息服务”中的含义

如果您仍希望发送超过160个字符,则需要将其拆分为两个或转换为彩信


因此,请使用
if
条件检查长度是否大于160个字符

默认情况下,短信的最大长度只能为160个字符。当我在工作时这样做时,你需要将格式设置为PDU,没有它是不可能的。我不在工作,因此我没有相关信息。进行谷歌搜索,你会发现信息y你需要通过PDU发送。编辑:这里有一些关于PDU格式的更多信息:“字符串是从十六进制八位字节和半十进制八位字节生成的”,所以这是可能的。我还发现:我通常会告诉你你还记得这件事吗?当你给某人发消息时,如果你的字符超过160,第一页将变为2。例如,它不会变为161(1) ,它将类似于1(2)如何以多部分消息的形式发送消息?如何以多部分消息的形式发送消息?我使用了SmsManager.sendMultipartTextMessage,但它不起作用。。