gpt4 book ai didi

Android PendingIntent 额外

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:56:33 27 4
gpt4 key购买 nike

我正在尝试从 Android 应用程序发送短信。我正在使用 PendingIntent 以便我可以使用 Broadcast Receiver 检查它是否发送正常。由于 sendTextMessage 调用将按 SMS 完成,我需要发送一些“额外”数据来识别实际的 SMS,以便我的广播接收可以对特定的 SMS 消息做一些工作。

这是我的发送代码:

        String SENT = "SMS_SENT";

Intent sentIntent = new Intent(SENT);
sentIntent.putExtra("foo", "BAR");
PendingIntent sentPI = PendingIntent.getBroadcast(baseContext, 0,
sentIntent, 0);

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

SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(smsMessage.getNumber(), null, smsMessage.getText(), sentPI, deliveredPI);

问题是在我的 BroadCast 接收器中,它似乎无法读取我的额外“foo”:

    public class SMSSentBroadcastReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context arg0, Intent intent) {
String smsID = intent.getStringExtra("foo");
......
}
}

smsID 变为空。

我的广播接收器是这样注册的:

baseContext.registerReceiver(new SMSSentBroadcastReceiver(), new IntentFilter("SMS_SENT"));

鉴于 Intent 过滤器正在运行,我做错了什么?为什么不发送额外的内容?

感谢任何帮助。谢谢

最佳答案

我怀疑发生了什么(至少,它发生在我身上)是你之前在其他地方使用了 SMS_SENT Intent ,那时,那个 Intent 在额外的地方没有“foo”。使用相同的 Intent 和请求代码调用 PendingIntent.getBroadcast 将返回原始的待定 Intent 。

如果它实际上意味着相同的 Intent ,您需要使用类似 PendingIntent.FLAG_UPDATE_CURRENT 的东西用新的附加功能更新 Intent 。如果它不是同一个 Intent ,它应该有一个不同的请求代码,这样它就不会匹配另一个 Intent (这就是为什么输入一个唯一的请求代码有效)。

关于Android PendingIntent 额外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9705899/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com