获取不在联系人列表中的SMS发件人姓名



我正在尝试获取短信发件人的姓名,他不在用户的联系人列表中。有时,我们会收到一些公司/银行等的短信,我们可以在短信框中的短信列表项目中看到该公司/银行的名称作为标题,而不是他们的号码,即使我们没有将其保存到联系人列表中。有没有可能通过从广播接收机那里获得的意图来获得这个名字?现在我正在从SMS意图中获取"pdu",并从中创建SMSMessage对象为:

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

for(int i=0; i<pdus.length; i++){
SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdus[i]);
byte[] userData = smsMessage.getUserData();
if (userData!=null){
for(int index=0; index<userData.length; ++index)
{
recMsgString += Character.toString((char)userData[index]);
}
}
message =
"Service center address: " + smsMessage.getServiceCenterAddress()+
"nPseudo object: " + smsMessage.getPseudoSubject() +
"nDisplay originating address : " + 
smsMessage.getDisplayOriginatingAddress()
+ "nOriginating address : " + smsMessage.getOriginatingAddress()
+"nUser data : " + recMsgString
+ "nEmail From: " + smsMessage.getEmailFrom()
+ "nEmail Body: " + smsMessage.getEmailBody()
+ "nDisplay message body: " + smsMessage.getDisplayMessageBody()
+ "nTime in millisecond: " + smsMessage.getTimestampMillis()
+ "nMessage: " + smsMessage.getMessageBody();

}

但是SMSMessage类似乎没有任何方法可以让我们获得发送者的名称。

我们该怎么做?非常感谢!

可以发送SMS并提供一个字母数字字符串作为"发送者";而不是发件人的电话号码。这可能就是你所看到的。您应该能够通过使用getOriginatingAddress()来获得这个字母数字字符串。

最新更新