如何监听通话记录数据库的变化?

时间:2014-02-23 11:22:11

标签: android broadcastreceiver calllog

我有一个主屏幕小部件,必须在未接来电时收到通知。我使用ContentObserver执行此操作,但它始终不起作用,并且我已经读过,原因是ContentObservers不能在AppWidgetProvider中注册。所以我想尝试使用BroadcastReceiver。我成功地创建了一个日历更改侦听器,每次在日历中添加,删除或修改事件时都会收到通知。我是这样做的:

<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>

我尝试使用上述方法来监听呼叫日志数据库中的更改,但它没有奏效。问题是,为什么?代码如下所示。

我的问题尚未在Stackoverflow中得到解答。 我无法在动作ACTION_PHONE_STATE_CHANGED中注册接收器,因为我不仅希望收听新的未接来电,还希望我的应用程序在用户读取未接来电时收到通知。 PROVIDER_CHANGED应该有助于实现这一目标,但ACTION_PHONE_STATE_CHANGED无效。

<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>

0 个答案:

没有答案