主要是我需要的是根據默認安卓日曆(Google)中的事件做出反應。收聽新的日曆事件
查詢提供程序並在任何給定時間獲取事件相當容易,但我的數據必須始終保持一致。 我想要的是避免查詢提供者每x分鐘檢查新事件。
我找不到任何應用程序存儲新事件時的系統廣播(僅當事件被觸發時)。 只是要清楚,我不想從我的應用程序創建,刪除等事件,我只是想監視它們,我需要創建新事件的時刻,以便我可以重新查詢提供程序。
我知道谷歌有一個(很差的文件)日曆API,有任何經驗嗎?它適合我的需求嗎?
主要是我需要的是根據默認安卓日曆(Google)中的事件做出反應。收聽新的日曆事件
查詢提供程序並在任何給定時間獲取事件相當容易,但我的數據必須始終保持一致。 我想要的是避免查詢提供者每x分鐘檢查新事件。
我找不到任何應用程序存儲新事件時的系統廣播(僅當事件被觸發時)。 只是要清楚,我不想從我的應用程序創建,刪除等事件,我只是想監視它們,我需要創建新事件的時刻,以便我可以重新查詢提供程序。
我知道谷歌有一個(很差的文件)日曆API,有任何經驗嗎?它適合我的需求嗎?
如this answer to a similar question解釋的,可以使用BroadcastReceiver通過創建具有以下意圖過濾器BroadcastReciver
接收來自默認的Android日曆改變事件:
<receiver
android:name=".NativeEventChangeReceiver">
<intent-filter>
<action android:name="android.intent.action.PROVIDER_CHANGED"/>
<data android:scheme="content"/>
<data android:host="com.android.calendar"/>
</intent-filter>
</receiver>
注意,沒有信息與該接收器一起傳遞 - 您需要在收到日曆API後查詢日曆API,以查找發生了什麼變化。如果您正在進行可能需要很長時間的操作,則可能需要考慮使用WakefulBroadcastReceiver和IntentService來執行較長時間的運行過程(因爲BroadcastReceiver
必須在012秒內完成,時間爲onReceive() documentation)。
<receiver android:name=".MyBroadcastReceiver" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.EVENT_REMINDER" />
<data android:scheme="content"/>
<data android:host="com.android.calendar"/>
</intent-filter>
</receiver>
這會觸發你的onReceive()。在事件發生前10分鐘通知您在日曆中設置EVENT。觸發器將僅在通知時發生
不知道有關「PROVIDER_CHANGED」廣播。 +1爲您的偉大答案! 。我將在本週末實施時接受它。謝謝! – MariusBudin
它的工作原理!大! – MariusBudin