SMSManager的android文档 sendTextMessage 函数

public void sendTextMessage (String destinationAddress, String scAddress, String text,
PendingIntent sentIntent, PendingIntent deliveryIntent)

deliveryIntent 如果不为NULL,则在将邮件传递给收件人时广播此PendingIntent。状态报告的原始pdu位于扩展数据(“pdu”)中

我无法理解SMS将SMS传递到destinationAddress或scAddress时是否触发了deliveryIntent,并且“状态报告的原始pdu在扩展数据(pdu)中”的含义是什么,以及如何获取该报告? 。

感谢您的努力。

最佳答案

当消息传递到destinationAddress时广播。

当注册的Intent.getExtras().get("pdu")收到您使用BroadcastReceiver定义的Intent广播时,可以从PendingIntent.getBroadcast(Context, int requestCode, Intent, int flags)中提取PDU。例如:

private void sendSMS(String phoneNumber, String message) {
    String DELIVERED = "DELIVERED";

    PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
        new Intent(DELIVERED), 0);

    registerReceiver(
        new BroadcastReceiver() {
            @Override
            public void onReceive(Context arg0, Intent arg1) {
                Object pdu = arg1.getExtras().get("pdu");
                ... //  Do something with pdu
            }

        },
        new IntentFilter(DELIVERED));

    SmsManager smsMngr = SmsManager.getDefault();
    smsMngr.sendTextMessage(phoneNumber, null, message, null, deliveredPI);
}

然后,您需要解析提取的PDU,SMSLib应该能够做到这一点。

关于android - "deliveryIntent"如何在Android SMS框架中工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9826917/

10-08 23:41