У меня есть виджет на рабочем столе, который должен уведомлять о пропущенном звонке. Я сделал это с 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>