android - "deliveryIntent"在 Android SMS 框架中如何工作?

标签 android android-intent sms pdu

SMSManars sendTextMessage 函数的 Android 文档

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

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

我不明白当 SMS 传送到 destinationAddress 或 scAddress 时是否触发了 deliveryIntent 以及“状态报告的原始 pdu 在扩展数据(“pdu”)中”是什么意思以及如何获取该报告? .

感谢您的努力。

最佳答案

当消息传送到destinationAddress时广播。

PDU可以从 Intent.getExtras().get("pdu") 中提取,当注册 BroadcastReceiver 接收到您使用 PendingIntent.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);               
}

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

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

相关文章:

java - 为什么不能将 android.os.build.VERSION 解析为变量?

android - 已弃用的 Canvas.getMatrix() 的替代方案是什么?

java - 通过 Intent 传递 list<String[]>

android - 无法从三星设备的通话记录中删除短信记录

android - 如何跟踪 Android 中的消息?

java - Objective C 到 Java Android

android - Android 6.0运行时权限检查回调是否必须在Activity中处理?

Android - 主要 Activity 无故结束?

java - Android 处理日历的按钮

android - Android 上的 0 类短信(闪光短信)