【问题标题】:Why is Android ContentObserver's onChange() not getting called?为什么没有调用 Android ContentObserver 的 onChange()?
【发布时间】:2026-02-19 18:15:02
【问题描述】:

我正在尝试创建一个 ContentObserver,它会在我的设备发送 SMS 时通知我。当我使用以下内容时,我的 onChange() 被调用:

public static final Uri uriSMS = Uri.parse("content://sms");

但是,当我尝试将其限制为仅使用此功能发送 SMS 消息时:

public static final Uri uriSMS = Uri.parse("content://sms/sent");

它不起作用; onChange() 方法根本不会被调用。谁能帮我解决这个问题?

【问题讨论】:

    标签: android sms contentobserver


    【解决方案1】:

    使用

    public static final Uri uriSMS = Uri.parse("content://sms");
    

    并检查光标的类型

    Here 是一个示例代码。

    【讨论】:

    • 我已经看到了人们使用 content://sms/sent 的其他 SO 问题。不再支持了吗?
    • 我想我在研究期间看到了那个样本,但还没有尝试过。我测试后会在这里报告。谢谢。
    • 它现在似乎被调用了,但它被调用了多次。为什么是这样?我只想处理一次,那么如何缩小 onChange() 事件中的测试范围,以免处理多次?
    • 你注销观察者了吗?
    • 还要检查 .. *.com/questions/6026547/…