Android 交付意图的pdu是否包含短信发送对象的电话号码?

Android 交付意图的pdu是否包含短信发送对象的电话号码?,android,pdu,Android,Pdu,我正试图在onReceive of delivery广播接收器中找到从意向PDU向其发送短信的人的电话号码,如下所示 @Override public void onReceive(Context context, Intent intent) { ThizLog.d(TAG, "Inside onReceive"); Bundle bundle = intent.getExtras(); Object[] messages = (Object[]) bundle.get

我正试图在onReceive of delivery广播接收器中找到从意向PDU向其发送短信的人的电话号码,如下所示

@Override
public void onReceive(Context context, Intent intent) {
    ThizLog.d(TAG, "Inside onReceive");
    Bundle bundle = intent.getExtras();
    Object[] messages = (Object[]) bundle.get("pdus");
    SmsMessage[] sms = new SmsMessage[messages.length];

    for (int n = 0; n < messages.length; n++) {
        sms[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
    }
    for (SmsMessage msg : sms) {
        // Verify if the message came from our known sender
        ThizLog.d(TAG,"!!! " + msg.getOriginatingAddress());

    }
    switch (getResultCode()) {
        case Activity.RESULT_OK:
            // SMS delivered
            break;
        case Activity.RESULT_CANCELED:
            /*
            *  SMS not delivered, show SMS_NOT_DELIVERED_MESSAGE
            */
            Toast toast = Toast.makeText(context, SMS_NOT_DELIVERED_MESSAGE, Toast.LENGTH_LONG);
            // shows toast on left top corner increase the zero value to
            // slide it right and down
            //toast.setGravity(Gravity.TOP | Gravity.LEFT, 0, 0);
            toast.show();
            break;
    }
}

这是可能的,Android的原生短信应用程序可以做到这一点。

我认为您没有从收到的意图中正确获取pdu。它将是额外键“pdu”下的单个pdu,而不是数组

试试这个:

public void onReceive(Context context, Intent intent) {
    String pdu=intent.getStringExtra("pdu");

    ...
}
public void onReceive(Context context, Intent intent) {
    String pdu=intent.getStringExtra("pdu");

    ...
}