如何在android中避免在日历中创建重复事件
我通过创建帐户在应用程序中添加了我自己的日历中的事件,但当我通过同步和帐户管理器通过同步日历进行同步时,事件会被复制,所以我如何检查事件是否已经存在。我优化了以下代码,但它似乎不能正常工作如何在android中避免在日历中创建重复事件,android,Android,我通过创建帐户在应用程序中添加了我自己的日历中的事件,但当我通过同步和帐户管理器通过同步日历进行同步时,事件会被复制,所以我如何检查事件是否已经存在。我优化了以下代码,但它似乎不能正常工作 Calendar cal = Calendar.getInstance(); Calendar beginTime = Calendar.getInstance(); Calendar endTime = Calendar.getInstance();
Calendar cal = Calendar.getInstance();
Calendar beginTime = Calendar.getInstance();
Calendar endTime = Calendar.getInstance();
Date dt = null;
Date dt1 = null;
try {
dt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(Stime);
dt1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(Etime);
cal.setTime(dt);
// beginTime.set(2013, 7, 25, 7, 30);
beginTime.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
cal.get(Calendar.DATE), cal.get(Calendar.HOUR),
cal.get(Calendar.MINUTE));
cal.setTime(dt1);
// endTime.set(2013, 7, 25, 14, 30);
endTime.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
cal.get(Calendar.DATE), cal.get(Calendar.HOUR),
cal.get(Calendar.MINUTE));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ContentResolver cr = this.mContext.getContentResolver();
ContentValues values = new ContentValues();
String selection = "((" + Instances.DTSTART + " = '"
+ beginTime.getTimeInMillis() + "') AND ("
+ Instances.DTEND + " = '" + endTime.getTimeInMillis()
+ "') AND (" + Instances.TITLE + " = '" + EventName
+ "') AND (" + Instances.CALENDAR_ID + " = '"
+ cal_event_id + "'))";
Log.i("EVENT NAME", " " + EventName);
Log.i("EVENT STIME", " " + Stime);
Log.i("EVENT ETIME", " " + Etime);
Uri.Builder builder = Instances.CONTENT_URI.buildUpon();
ContentUris.appendId(builder, beginTime.getTimeInMillis());
ContentUris.appendId(builder, endTime.getTimeInMillis());
long begin = beginTime.getTimeInMillis();// starting time in
// milliseconds
long end = endTime.getTimeInMillis(); // ending time in milliseconds
String[] proj = new String[] { Instances._ID, Instances.DTSTART,
Instances.DTEND, Instances.EVENT_ID, Instances.TITLE,
Instances.CALENDAR_ID };
Cursor cursor = Instances.query(this.mContext.getContentResolver(),
proj, begin, end);
if (cursor.getCount() > 0) {
// deal with conflict
while (cursor.moveToNext()) {
long id = 0;
id = cursor.getLong(cursor.getColumnIndex("_ID"));
long eventid = 0;
eventid = cursor.getLong(cursor.getColumnIndex("EVENT_ID"));
String event_Name = null;
event_Name = cursor.getString(cursor
.getColumnIndex("TITLE"));
Log.i("event_Name", event_Name);
long Calid = 0;
Calid = cursor
.getLong(cursor.getColumnIndex("CALENDAR_ID"));
if (event_Name.equalsIgnoreCase(EventName)) {
String[] j = cursor.getColumnNames();
Log.i("DUPLICATE", "-------- " + EventName + "ID:::"
+ id + "==" + j[1] + "==" + j[2] + "EVENTID::"
+ eventid + "==" + j[4] + "CALENDARID::"
+ Calid);
return 1;
} else {
Log.i("LATEST", "CAST");
return 0;
}
}
} else {
Log.i("LATEST", "-------- " + cursor.getCount());
}
return 0;
}
我所做的一件简单的事情(对于报警)是查询具有相同属性的事件是否已经存在,并仅在不存在时添加它。
这也为您提供了更新现有条目的可能性。我是如何实现另一种方法来检查事件是否已在日历中注册的
public boolean isEventInCal(Context context, String cal_meeting_id) {
Cursor cursor = context.getContentResolver().query(
Uri.parse("content://com.android.calendar/events"),
new String[] { "_id" }, " _id = ? ",
new String[] { cal_meeting_id }, null);
if (cursor.moveToFirst()) {
return true;
}
return false;
}
r u使用设备日历?首先,我创建了自己的日历,id为1,在新日历上我添加了事件…我一直面临时区问题…实际上,事件是在日期前一天添加的,我使用24小时时区+5.30 gmt运行。我还面临着在日期前一天添加的相同问题事件如何解决此问题@DhruvitDarjiHi在这个答案中什么是cal_会议_id@Ram这是活动id。是的,我找到了