我在我的Android日历中添加了事件,然后通过我的应用程序我分析它们是否完美。
但是当我从日历中删除事件然后从日历中读取事件时。它仍然向我展示这些事件。我只是想知道为什么会出现这种行为。
我正在使用此代码阅读最新的活动。
private void fetchCalenderEvents() {
Cursor cur = null;
ContentResolver cr = getContentResolver();
cur = cr.query(CalendarContract.Events.CONTENT_URI, EVENT_PROJECTION,
null, null,null);
outputText.setText("");
long currenttime = new Date().getTime();
//setContentView(R.layout.main);
while (cur.moveToNext()) {
StringBuilder strbuldr = new StringBuilder();
long calID = 0;
String displayName = null;
String accountName = null;
String ownerName = null;
String name = null;
long startDate,endDate;
String eventlocation = null;
String eventOrganizer = null;
String strDuration = null;
// Get the field values
calID = cur.getLong(PROJECTION_ID_INDEX);
displayName = cur.getString(PROJECTION_DISPLAY_NAME_INDEX);
accountName = cur.getString(PROJECTION_ACCOUNT_NAME_INDEX);
ownerName = cur.getString(PROJECTION_OWNER_ACCOUNT_INDEX);
name = cur.getString(PROJECTION_EVENT_TITILE);
startDate = cur.getLong(PROJECTION_EVENT_DTSTART);
endDate = cur.getLong(PROJECTION_EVENT_DATEEND);
Format df = DateFormat.getDateFormat(this);
Format tf = DateFormat.getTimeFormat(this);
eventlocation = cur.getString(PROJECTION_EVENT_LOC);
eventOrganizer = cur.getString(PROJECTION_EVENTT_ORGANIZER);
strDuration = cur.getString(PROJECTION_EVENT_DURATION);
if(startDate>=currenttime){
strbuldr.append("Meeting "+name
+" "
+"has been Scheduled on date"+df.format(startDate)
+" time "
+tf.format(startDate)
+" for duration "+strDuration);
outputText.append(strbuldr.toString());
outputText.append("\n");
if (outputText.getText().toString().trim().length() == 0) {
Toast.makeText(getApplicationContext(),
"Please enter your message.", Toast.LENGTH_LONG).show();
return;
}
else{
speakUSLocale();
confirmTTSData();
break;
}
}else{
Log.d(DEBUG_TAG, "Old events");
}
}
cur.close();
}
它也向我显示已删除的事件。
答案 0 :(得分:0)
确切的语法如下:
String selection = "( ( " + CalendarContract.Events.DTSTART + " >= " + beginTime.getTimeInMillis() + " ) AND ( " + CalendarContract.Events.DTSTART + " <= " + endTime.getTimeInMillis() + " ) AND ( " + CalendarContract.Events.DELETED + " != 1) " + " )";
对我有用!!!
完整代码在这里
public void mycheckforappointments() {
boolean foundappointment = false;
int calId = 0;
String title = "";
String msg = "";
String description = "";
Date startime;
Date endtime;
String starttimestring;
Cursor cursor = null;
String[] projection = new String[]{CalendarContract.Events.CALENDAR_ID, CalendarContract.Events.TITLE, CalendarContract.Events.DESCRIPTION, CalendarContract.Events.DTSTART, CalendarContract.Events.DTEND, CalendarContract.Events.ALL_DAY, CalendarContract.Events.EVENT_LOCATION};
// 0 = January, 1 = February, ...
Calendar beginTime = Calendar.getInstance();
beginTime.set(2019, 1, 20, 7, 30);
Calendar endTime = Calendar.getInstance();
endTime.set(2019, 1, 27, 8, 30);
beginSavedTime = beginTime;
beginEndTime = endTime;
// the range
try {
//String OLDselection = "(( " + CalendarContract.Events.DTSTART + " >= " + beginTime.getTimeInMillis() + " ) AND ( " + CalendarContract.Events.DTSTART + " <= " + endTime.getTimeInMillis() + " ))";
String selection = "( ( " + CalendarContract.Events.DTSTART + " >= " + beginTime.getTimeInMillis() + " ) AND ( " + CalendarContract.Events.DTSTART + " <= " + endTime.getTimeInMillis() + " ) AND ( " + CalendarContract.Events.DELETED + " != 1) " + " )";
cursor = this.getBaseContext().getContentResolver().query(CalendarContract.Events.CONTENT_URI, projection, selection, null, null);
if (cursor.moveToFirst()) {
do {
calId = cursor.getInt(0);
title = cursor.getString(1);
description = cursor.getString(2);
startime = new Date(cursor.getLong(3));
if (title.equals("XXXX Community Services Appointment")) {
startime = new Date(cursor.getLong(3));
starttimestring = startime.toString();
TextView myappointmentstattime = (TextView) findViewById(R.id.myappointmentstartime);
myappointmentstattime.setText(starttimestring);
description = cursor.getString(2);
TextView myappointmentdescription = (TextView) findViewById(R.id.myappointmentdescription);
myappointmentdescription.setText(description);
foundappointment = true;
}
} while (cursor.moveToNext());
}
if (!foundappointment)//didnt find one
{
msg = "Did not find any XXX Community Services Appointments";
displayMsg("XXX App", msg);
}
} catch (Exception e) {
msg = e.toString();
displayMsg("Error", msg);
return;
}
}//end