网上搜索了好长时间都没找到关于日历日程监听的广播,后来灵机一动想到查看系统log,当日历日程弹出提示框后查看eclipse打出的log信息,有一行D/AlarmManager: sending WAKEUP alarm: act=android.intent.action.EVENT_REMINDER dat=content://com.android.calendar/1453775700000 Pkg: com.android.providers.calendar信息,于是猜测android.intent.action.EVENT_REMINDER应该是日程的广播通知。
private void initCalenderFilter() { if (vrCalendarContractBroadcast == null) { vrCalendarContractBroadcast = new VRCalendarContractBroadcast(); } IntentFilter intentCalender = new IntentFilter(CalendarContract.ACTION_EVENT_REMINDER); intentCalender.addDataScheme("content"); //隐示intent所以要加这一行 registerReceiver(vrCalendarContractBroadcast, intentCalender); }
Broadcast接受处理消息
if (intent.getAction().equals(CalendarContract.ACTION_EVENT_REMINDER)){ Uri uri = intent.getData(); String alertTime = uri.getLastPathSegment(); String selection = CalendarContract.CalendarAlerts.ALARM_TIME + "=?"; Cursor cursor = context.getContentResolver().query(CalendarContract.CalendarAlerts.CONTENT_URI_BY_INSTANCE, new String[]{CalendarContract.CalendarAlerts.TITLE}, selection, new String[]{alertTime}, null); if (cursor.moveToFirst()){ String title = cursor.getString(cursor.getColumnIndex(CalendarContract.Events.TITLE)); } }随手记勿吐槽!如果有疑问可以一起探讨!