我正在开发一个加密短信应用程序,我正在将短信加密到3DES,并且我试图使用SmsManager.sendDataMessage将字节数组结果发送到另一个手机,但我无法读取在接收方电话右字节数组,例如:在android中发送非打印字符二进制短信
我的应用程序发送该数组:
[0,1,2,3,4,5,6,7,-100,-101,-105,-110]
和在其它电话,我只接收(如果幸运)
[0,1,2,3,4]
我试图用许多编码发送文本,但它不工作。
我在模拟器和设备上试过,行为是一样的。
我试着从可打印的字符(字母,数字)发送字节,它的作品完美,所以我 认为这个问题是非打印字节,但我需要发送字节槽sms ....朋友制作类似的东西,但使用黑莓和它工作得很好。
我在做什么错?
这对于发送代码:
SmsManager manager = SmsManager.getDefault();
byte[] arrBytes = new byte[]{0,1,2,3,4,5,6,7,-100,-101,-105,-110};
manager.sendDataMessage(number, null, (short)0, arrBytes, null, null);
这是用于接收的码:
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){
Bundle bundle = intent.getExtras();
SmsMessage[] smsMensajes = null;
if(bundle != null){
try{
Object[] pdus = (Object[]) bundle.get("pdus");
smsMensajes = new SmsMessage[pdus.length];
byte[] msjByte = new byte[100];
for(int i=0; i < smsMensajes.length; i++){
smsMensajes[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
msjByte = smsMensajes[i].getUserData();
}
}
catch(Exception e){
Log.e("Recibiendo SMS", e.toString());
}
}
}
}
感谢提前:)
2013-12-13
oware