【发布时间】:2016-01-10 15:25:09
【问题描述】:
我正在尝试编写一个 Android 服务应用程序,它拦截失败的传出短信(由于服务不可用)以存储它们,并在电话服务恢复后尝试重新发送它们。我几乎让它工作了,但我有这个问题,这不是那么简单解释,但我会尝试,希望你理解: 我已经在 URI content://sms 上设置了一个 ContentObserver,即使我感兴趣的是 content://sms/failure,因为如果我在最后一个 URI 上设置它,onChange 方法不会被触发,我不会不知道为什么。如果成功发送和接收消息不会打扰我,因为在观察者的 onChange 方法中,我只读取了 content://sms/failed 中的内容,这是真正的问题:onChange 也会在 DELETE 事件上触发,当然,例如,在成功发送先前失败的消息时会发生这种情况。这对我的应用程序不利,因为如果我无法区分删除事件和添加事件,我不知道我是否必须将失败消息队列中的第一条短信添加到“重新发送”列表中。所以,我的问题是:有没有办法区分删除和添加事件与内容观察者?
PS:很高兴了解为什么 content://sms/failed 上的 ContentObserver 不起作用。
PPS:我还有一个小问题:我正在使用 SmsManager 重新发送消息,效果很好,唯一的问题是我只能设置目标号码和消息的正文,但不能设置消息的 ID,因此,当我重新发送一条短信时,系统会认为它只是一条新短信,而不是重新发送的旧短信(因此旧的失败消息保留在队列中,不会被系统删除)。
【问题讨论】:
-
天哪!我的眼睛!!! TL;DR 请提高可读性。
标签: java android sms contentobserver