接受系统短信广播问题

 class MessageReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            Bundle bundle = intent.getExtras();
            Object[] pdus = (Object[]) bundle.get("pdus");
            SmsMessage[] messages = new SmsMessage[pdus.length];
            for(int i = 0 ; i < messages.length; i++) {
                messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
            }
            String address = messages[0].getOriginatingAddress();//获取发送发号码
            String fullMessage = "";
            for(SmsMessage message : messages) {
                fullMessage += message.getMessageBody();//获取短信内容
            }
            sender.setText(address);
            content.setText(fullMessage);
        }

有几个问题不太明白:1、messages[0].getOriginatingAddress()是默认数组第一个数存放发送方号码吗?


2、foreach语句中的message对象是已经实例化了吗?

道可道非常道
浏览 1200回答 1
1回答

极客丶D

message[0]是获取message数组中的第一个元素SmsMessage,然后通过SmsMessage对象调用getOriginatingAddress(),获取发送号码foreach时,message已经初始化了,只不过每个元素的内容没有复制,都是默认初始化为null,然后在foreach中进行赋值
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android
Java