问题描述
|
似乎是我需要解析在SMS broadcastReceiver期间接收到的PDU字节数组:
@Override
public void onReceive(Context context,Intent intent)
{
Bundle bundle = intent.getExtras();
Object[] pdus = (Object[]) bundle.get(\"pdus\");
}
有人可以指出我该怎么做吗?
我知道PDU可以使用ѭ1来处理,但这不是我想要的。我需要对pdu字节进行更精确的控制。
解决方法
我找到了解决方案-有一个不错的Java和点NET库(在Apache许可下),该库可以处理所有与PDU相关的内容-解析等。这是SMSLib
,
@Override
public void onReceive(Context context,Intent intent) {
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
if (bundle == null) return;
Object[] pdus = (Object[]) bundle.get(\"pdus\");
msgs = new SmsMessage[pdus.length];
smsCount = msgs.length;
String originalAddress;
String tmpSmsBody;
for (int i=0; i<msgs.length; i++){
msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
// Original Address
originalAddress = msgs[i].getOriginatingAddress();
// Message body
tmpSmsBody= msgs[i].getMessageBody().toString();
}
}