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

Ash*_*sik 7 sms android

我试图获取一个保存在手机中的消息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();
    }

}
Run Code Online (Sandbox Code Playgroud)

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

Sri*_*ram 0

您必须解析 SMS PDU(原始 PDU 格式),因为在 Android 应用程序层不存在用于检索用户数据标头的 API。我相信短消息标识符位于用户数据标头(八位字节 1)内。请参阅解析 SMS PDU帖子。

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

希望这可以帮助。