gpt4 book ai didi

当短信来自电子邮件时,android.provider.Telephony.SMS_RECEIVED 不会触发

转载 作者:太空狗 更新时间:2023-10-29 14:14:14 26 4
gpt4 key购买 nike

我的 BroadcastReceiver 在设备从另一部普通电话接收短信时工作正常,但如果短信是通过运营商的电子邮件网关发送的,例如“myphonenumber@mycarrier.com”,那么消息通常作为 SMS 在设备上接收,但 android.provider.Telephony.SMS_RECEIVED 操作不会触发并且我的 BroadcatReceiver 永远不会收到通知。有什么我想念的吗?

<receiver android:name=".services.IncomingSmsBroadcastReceiver" >
<intent-filter android:priority="2147483647" >
<action android:name="android.provider.Telephony.SMS_RECEIVED" >
</action>
</intent-filter>
</receiver>

最佳答案

关于运营商如何处理电子邮件,我发现了一些有趣的事情,这反过来导致了我的 if 语句中的错误行为,进而导致了这个问题中所述的问题。

显然,当手机服务提供商处理发送到您手机的电子邮件时,他们会通过一个随机的短号码发送电子邮件:例如 4043。在您的 BroadcastReceiver 中,当您获得 SmsMessage 时,您应该始终使用 SmsMessage.getDisplayOriginatingAddress()SmsMessage.getDisplayMessageBody ()。这些将分别为您提供发送邮件的电子邮件地址和正确的正文。与 SmsMessage.getOriginatingAddress()SmsMessage.getMessageBody() 不同,它们会给你前面提到的随机数和包含电子邮件地址的正文与实际混合内容。

关于当短信来自电子邮件时,android.provider.Telephony.SMS_RECEIVED 不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24197439/

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