2013-03-31 21 views
7

我试图获取保存在手机中的消息ID。 但我未能得到它。 我现有的代码是在这里从onReceive获取消息线程ID或_id android

@Override 
public void onReceive(Context context, Intent intent) { 
    String address = ""; 
    String message = ""; 
    String msg_id=""; 
    Bundle extras = intent.getExtras(); 
    if (extras != null) { 
     Object[] smsExtra = (Object[]) extras.get("pdus"); 

     for (int i = 0; i < smsExtra.length; i++) { 
      SmsMessage sms = SmsMessage.createFromPdu((byte[]) smsExtra[i]); 
      message += sms.getMessageBody(); 
      address = sms.getOriginatingAddress(); 
     } 
     sms = new Sms(msg_id,message, address); 
     UploadSms up = new UploadSms(); 
     up.start(); 
     Toast.makeText(context, 
       "SMS Received>>" + message + "From >>" + address, 
       Toast.LENGTH_LONG).show(); 
    } 

} 

通过这个我得到短信的身体和发送号码。 但我知道在android手机中每个消息都有一个唯一的编号,我检索它。 但无法检索onReceive方法。 谢谢

回答

0

你将不得不解析SMS PDU(原始PDU格式),因为在android应用层不存在检索用户数据头的API。我相信短消息标识符驻留在用户数据头(字节1)中。请参阅帖子Parsing SMS PDU

在这篇文章中,其中一位用户提到名为“SMSLib”(在APACHE许可下)的免费软件,以解析和提取消息参数。消息ID可以使用方法getMessageId() - 类org.smslib.Message中的方法提取。

希望这会有所帮助。

+0

如何从SMSMessage获取SMS ID? –