关于接收短信时候, 在Android Studio中编辑代码提示
createFromPdu(byte[] pdu)
这个方法不推荐使用了,然后查阅安卓的参考说从API 23以后应该用
createFromPdu(byte[], String)
代替. 继续查阅得知第二个参数应该是短信的类型, GSM与CDMA短信的解码方式不同,所以应该传入这个参数,
String format = intent.getStringExtra("format");从Intent 中获取format;
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
Object[] pdus = (Object[]) bundle.get("pdus");
String format = intent.getStringExtra("format");
SmsMessage[] smsMessages = new SmsMessage[pdus.length];
for (int i = 0; i <smsMessages.length; i++) {
byte[] sms = (byte[])pdus[i];
smsMessages[i] = SmsMessage.createFromPdu(sms,format);
}
String address =smsMessages[0].getOriginatingAddress();
StringBuilder mstr =null;
for (SmsMessage message:smsMessages){
mstr.append(message.getMessageBody());
}