@Override public void onReceive(Context ctx, Intent intent) { Toast toast; SharedPreferences prefs = ctx.getSharedPreferences("Cals", 0); if (prefs.getBoolean("toasts", false)) { toast = Toast.makeText(ctx, "Checking Calendars", Toast.LENGTH_SHORT); toast.show(); } AlarmManager alarmManager = (AlarmManager) ctx.getSystemService("alarm"); Calendar cal = Calendar.getInstance(); ContentResolver cr = ctx.getContentResolver(); Uri uri = CalendarContract.Instances.CONTENT_URI; Builder builder = uri.buildUpon(); Cursor CALcur; int after, before, freq, avail, allday, eventId; long dtend, dtstart; String title, location, description; String[] calendars; DbGroupsAdapter mDbHelper = new DbGroupsAdapter(ctx); mDbHelper.open(); Cursor DBcur; if (prefs.getBoolean("advanced", false)) DBcur = mDbHelper.getGroupsData("DESC"); else DBcur = mDbHelper.getGroupData("1"); while (DBcur.moveToNext()) { freq = prefs.getInt("frequency", 3600000); after = DBcur.getInt(DBcur.getColumnIndex("after")); before = DBcur.getInt(DBcur.getColumnIndex("before")); allday = DBcur.getInt(DBcur.getColumnIndex("allday")); avail = DBcur.getInt(DBcur.getColumnIndex("busy")); title = DBcur.getString(DBcur.getColumnIndex("title")); location = DBcur.getString(DBcur.getColumnIndex("location")); description = DBcur.getString(DBcur.getColumnIndex("description")); calendars = DBcur.getString(DBcur.getColumnIndex("calendars")).split(","); String selection = "(" + CalendarContract.Instances.END + " > " + (cal.getTimeInMillis() - ((after * 60 * 1000))) + " ) "; selection += " AND (" + CalendarContract.Instances.BEGIN + " <= " + (cal.getTimeInMillis() + ((before * 60 * 1000) + 2 * freq)) + " ) "; if (allday == 0) selection += " AND ( NOT " + CalendarContract.Instances.ALL_DAY + " ) "; else if (allday == 2) selection += " AND ( " + CalendarContract.Instances.ALL_DAY + " ) "; if (avail == 0) selection += " AND (" + CalendarContract.Instances.AVAILABILITY + " = " + CalendarContract.Instances.AVAILABILITY_BUSY + " ) "; else if (avail == 1) selection += " AND (" + CalendarContract.Instances.AVAILABILITY + " = " + CalendarContract.Instances.AVAILABILITY_FREE + " ) "; if (title.length() > 0 && prefs.getBoolean("title", false)) selection += " AND (" + CalendarContract.Instances.TITLE + " LIKE '%" + title.replace("'", "\'") + "%' ) "; if (location.length() > 0 && prefs.getBoolean("location", false)) selection += " AND (" + CalendarContract.Instances.EVENT_LOCATION + " LIKE '%" + location.replace("'", "\'") + "%' ) "; if (description.length() > 0 && prefs.getBoolean("description", false)) selection += " AND (" + CalendarContract.Instances.DESCRIPTION + " LIKE '%" + description.replace("'", "\'") + "%' ) "; selection = "( " + selection + " )"; builder = uri.buildUpon(); ContentUris.appendId(builder, cal.getTimeInMillis() - ((after * 60 * 1000))); ContentUris.appendId(builder, cal.getTimeInMillis() + ((before * 60 * 1000) + 2 * freq)); CALcur = cr.query( builder.build(), new String[] { CalendarContract.Instances._ID, CalendarContract.Instances.CALENDAR_ID, CalendarContract.Instances.TITLE, CalendarContract.Instances.END, CalendarContract.Instances.BEGIN }, selection, null, null); while (CALcur.moveToNext()) { if (!Arrays.asList(calendars) .contains( CALcur.getString(CALcur.getColumnIndex(CalendarContract.Instances.CALENDAR_ID)))) continue; if (prefs.getBoolean("toasts", false)) { toast = Toast.makeText( ctx, "Scheduleing Event: " + CALcur.getString(CALcur.getColumnIndex(CalendarContract.Instances.TITLE)), Toast.LENGTH_SHORT); toast.show(); } eventId = CALcur.getInt(CALcur.getColumnIndex(CalendarContract.Instances._ID)); dtend = CALcur.getLong(CALcur.getColumnIndex(CalendarContract.Instances.END)) + (after * 60 * 1000); dtstart = CALcur.getLong(CALcur.getColumnIndex(CalendarContract.Instances.BEGIN)) - (before * 60 * 1000); alarmManager.set( AlarmManager.RTC_WAKEUP, dtstart, PendingIntent.getBroadcast(ctx, eventId, new Intent(ctx, SetSilent.class), 0)); alarmManager.set( AlarmManager.RTC_WAKEUP, dtend, PendingIntent.getBroadcast(ctx, -eventId, new Intent(ctx, SetSilent.class), 0)); } } mDbHelper.close(); ctx.sendBroadcast(new Intent(ctx, SetSilent.class)); }