Android 如何侦听呼叫日志数据库中的更改?

Android 如何侦听呼叫日志数据库中的更改?,android,broadcastreceiver,calllog,Android,Broadcastreceiver,Calllog,我有一个主屏幕小部件,当未接来电时必须通知它。我使用ContentObserver实现了这一点,但它并不总是有效,而且我已经了解到原因是ContentObserver不能在AppWidgetProvider中注册。所以我想尝试使用广播接收器。我已经成功创建了一个日历更改侦听器,每当我在日历中添加、删除或修改事件时,它都会收到通知。我是这样做的: <receiver android:name="...backend.observers.CalendarChangesReceiver"

我有一个主屏幕小部件,当未接来电时必须通知它。我使用
ContentObserver
实现了这一点,但它并不总是有效,而且我已经了解到原因是ContentObserver不能在
AppWidgetProvider
中注册。所以我想尝试使用
广播接收器
。我已经成功创建了一个日历更改侦听器,每当我在日历中添加、删除或修改事件时,它都会收到通知。我是这样做的:

<receiver
    android:name="...backend.observers.CalendarChangesReceiver"
>
    <intent-filter>
        <action android:name="android.intent.action.PROVIDER_CHANGED"/>
        <data android:scheme="content"/>
        <data android:host="com.android.calendar"/>
    </intent-filter>
</receiver>

日历的相同代码不适用于我。你是怎么做到的?你们在使用广播接收器的同时使用服务吗?日历对我来说是用那个代码工作的,但不是电话。最后,对于手机,我使用了一个广播接收器,当电话进入时,它会引起注意。
<receiver
    android:name="...backend.observers.CallsChangesReceiver"
>
    <intent-filter>
        <action android:name="android.intent.action.PROVIDER_CHANGED"/>
        <data android:scheme="content"/>
        <data android:host="com.android.phone"/>
    </intent-filter>
</receiver>