"deliveryIntent"如何在Android SMS框架中运行?

Gau*_*wal 8 sms android pdu android-intent

SMSManagers的Android文档sendTextMessage函数

public void sendTextMessage (String destinationAddress, String scAddress, String text,         
PendingIntent sentIntent, PendingIntent deliveryIntent)
Run Code Online (Sandbox Code Playgroud)

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

我无法理解当SMS传递到destinationAddress或scAddress时是否会触发deliveryIntent,"状态报告的原始pdu是否在扩展数据("pdu")中是什么意思"以及如何获取该报告?.

我感谢您的努力.

a.c*_*ch. 4

当消息传递到 时,它会被广播destinationAddress

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

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);               
}
Run Code Online (Sandbox Code Playgroud)

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