从onReceive android获取消息线程id或_id

我试图获取一个保存在手机中的消息ID.
但我没能得到它.
我现有的代码在这里
@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方法中检索.
谢谢

解决方法

您将不得不解析SMS PDU(以原始PDU格式),因为在Android应用程序层,不存在用于检索用户数据头的API.我相信短消息标识符位于用户数据标题(八位位组1)内.请参阅 Parsing SMS PDU后的帖子.

在该帖子中,其中一个用户通过名称“SMSLib”(在APACHE许可证下)提到免费软件,以便解析和提取消息参数.可以使用方法getMessageId() – 类org.smslib.Message中的方法提取消息ID.

希望这可以帮助.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...