获取不在联系人列表中的短信发件人姓名?
Get SMS sender name who is NOT in contact list?
我正在尝试获取 SMS 发件人的姓名,该发件人不在用户的联系人列表中。有时,我们收到一些corporations/banks等人的短信,在我们的短信框的短信列表项中,我们可以看到那个corporation/bank的名字是header,而不是他们的号码,甚至如果我们没有将它保存到我们的联系人列表中。是否可以通过从广播接收器获得的意图获得该名称?
现在我从 SMS 意图中获取 'pdu',并从中创建 SMSMessage object 作为:
@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();
}
但是SMSMessageclass似乎没有任何方法可以让我们获取发件人的名字。
我们怎么做?
非常感谢!
可以发送短信并提供字母数字字符串作为“发件人”而不是发件人的 phone 号码。那可能就是你所看到的。您应该能够使用 getOriginatingAddress()
.
获取此字母数字字符串
我正在尝试获取 SMS 发件人的姓名,该发件人不在用户的联系人列表中。有时,我们收到一些corporations/banks等人的短信,在我们的短信框的短信列表项中,我们可以看到那个corporation/bank的名字是header,而不是他们的号码,甚至如果我们没有将它保存到我们的联系人列表中。是否可以通过从广播接收器获得的意图获得该名称? 现在我从 SMS 意图中获取 'pdu',并从中创建 SMSMessage object 作为:
@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();
}
但是SMSMessageclass似乎没有任何方法可以让我们获取发件人的名字。
我们怎么做? 非常感谢!
可以发送短信并提供字母数字字符串作为“发件人”而不是发件人的 phone 号码。那可能就是你所看到的。您应该能够使用 getOriginatingAddress()
.