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

Android 获取不在联系人列表中的SMS发件人姓名?,android,android-intent,broadcastreceiver,sms,Android,Android Intent,Broadcastreceiver,Sms,我正在尝试获取短信息发送者的姓名,该姓名不在用户的联系人列表中。有时,我们从一些公司/银行等处收到短信,我们可以在短信框中的短信列表项中将该公司/银行的名称作为标题,而不是其号码,即使我们尚未将其保存到联系人列表中。是否有可能通过从广播接收器获得的意图获得该名称? 现在,我正在从SMS intent获取“pdu”,并从中创建SMSMessage对象,如下所示: @Override public void onRece

我正在尝试获取短信息发送者的姓名,该姓名不在用户的联系人列表中。有时,我们从一些公司/银行等处收到短信,我们可以在短信框中的短信列表项中将该公司/银行的名称作为标题,而不是其号码,即使我们尚未将其保存到联系人列表中。是否有可能通过从广播接收器获得的意图获得该名称? 现在,我正在从SMS intent获取“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();
    
                    }
@覆盖
公共void onReceive(上下文、意图){
Bundle data=intent.getExtras();
Object[]pdus=(Object[])data.get(“pdus”);
字符串recMsgString=“”;

对于(int i=0;i可以发送SMS并提供字母数字字符串作为“发件人”,而不是发件人的电话号码。这可能就是您看到的。您应该能够通过使用
GetOriginagingAddress()

获取此字母数字字符串可以发送SMS并提供字母数字字符串作为“发件人”而不是发件人的电话号码。这可能就是您看到的。@DavidWasser我们如何获取发件人的字母数字字符串而不是他们的电话号码。我们可以使用方法“getOriginatingAddress()”获取发件人的号码SmsMessage类的。我们如何获得发送者的字母数字字符串呢?我很确定,如果他们将发送者设置为字符串,您将在
getoriginingaddress()中获得该字符串
@DavidWasser,好的,谢谢。也许你可以把上面的评论作为这个问题的答案,这样我就可以把它标记为最佳答案。完成。请告诉我这是否适合你。