2013-07-29 93 views
2

我已经通过创建帐户,但在以往我通过同步通过同步日历同步&客户经理,事件得到如此重复我如何检查是否添加在应用自己的日历事件事件已经存在与否。我已经优化了以下代码,但它似乎无法正常工作。如何避免重复事件的创建日历中的Android

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; 
     } 
+0

[Rü使用设备压延机? – KOTIOS

+0

首先,我创建了自己的日历,其ID为1个,在新的日历我已经添加事件... –

回答

3

如何我已经实现了另一种方式来检查事件是否已经注册,或者无法在日历......

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; 
} 
+0

嗨在这个答案是什么cal_meeting_id – R2R

+0

@Ram这是事件ID。 – vsvankhede

+0

亚我发现 – R2R

1

一件简单的事情我做了(用于报警)是查询,如果有相同属性的事件已经存在,并加入它,只有当它没有。 这使您还可以随时更新现有条目的可能性。

+0

我一直面临的问题与时区...其实事件增加了前一天的日期和IM与24小时时区5.30运行格林尼治标准时间.. –

+0

我刚找到替代方式.... –