解析短信PDU

问题描述:

似乎是我需要解析短信广播接收器期间收到的PDU字节数组:解析短信PDU

@Override 
public void onReceive(Context context, Intent intent) 
{ 
    Bundle bundle = intent.getExtras(); 
    Object[] pdus = (Object[]) bundle.get("pdus"); 
} 

有人能指出我该怎么办呢?

我知道PDU可以使用SmsMessage.createFromPdu((byte[]) pdus[i])来处理,但这不是我要找的。我需要更精确地控制pdu字节。

我已经找到了解决方案 - 有不错的Java和点网库(在Apache许可),它处理所有PDU相关的东西 - 解析等。这是SMSLib

+0

给定链接已损坏..希望我们可以使用此https://code.google.com/archive/p/smslib/downloads – RameshJaga 2017-05-26 07:43:18

@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(); 
    }     
} 
+0

请仔细阅读我的问题。我知道函数createFromPdu() - 这不是我正在寻找的! – barmaley 2011-04-14 13:54:10

+0

@barmaley如果你想要更精确的控制,你应该自己解析它。您可以搜索SMS standart。 – vendor 2011-04-14 14:35:33