代码之家  ›  专栏  ›  技术社区  ›  Paresh Mayani jeet

Android日历事件

  •  6
  • Paresh Mayani jeet  · 技术社区  · 15 年前

    我只是和日历内容提供商做了一个操作,现在我无法显示特定日期的事件。

    我知道<2.1版和2.2版的事件URI,如下所示:

    eventsUri = Uri.parse("content://calendar/events");    // < Android 2.1 version
    
    eventsUri = Uri.parse("content://com.android.calendar/events");  // For Android Froyo 2.2 and later version
    

    我的怀疑是:

    1. 如何获取所有事件?
    2. 如何获取特定日期的事件?

    所以,请有人知道日历请帮助我和分享你的知识。

    塔克斯

    2 回复  |  直到 14 年前
        1
  •  9
  •   bbaja42    15 年前

    这些示例适用于<=2.1版本;

    首先,找出哪些日历存在

    Cursor cursor = cr.query(Uri.parse("content://calendar/calendars"), new String[]{ "_id",  "displayname" }, null, null, null);
    cursor.moveToFirst();
    String[] CalNames = new String[cursor.getCount()];
    int[] CalIds = new int[cursor.getCount()];
    for (int i = 0; i < CalNames.length; i++) {
        CalIds[i] = cursor.getInt(0);
        CalNames[i] = cursor.getString(1);
        cursor.moveToNext();
    }
    cursor.close();
    

    获取所有事件,并通过指定范围来完成特定事件
    ContentResolver contentResolver = getContentResolver() ;

    Uri.Builder builder = Uri.parse(getCalendarUriBase() + "/instances/when").buildUpon();
            long now = new Date().getTime();
            ContentUris.appendId(builder, now - DateUtils.MILLIS_PER_DAY*10000);
            ContentUris.appendId(builder, now + DateUtils.MILLIS_PER_DAY * 10000);
    

    然后假设您希望从ID=1的日历中记录事件ID

    Cursor eventCursor = contentResolver.query(builder.build(),
                    new String[] { "event_id"}, "Calendars._id=" + 1,
                    null, "startDay ASC, startMinute ASC"); 
            // For a full list of available columns see http://tinyurl.com/yfbg76w
            while (eventCursor.moveToNext()) {
                String uid2 = eventCursor.getString(0);
                Log.v("eventID : ", uid2);
    
            }
    
        2
  •  1
  •   Paresh Mayani jeet    6 年前

    //这里有一种方法可以让你得到所有的日历事件列表

    public static void readCalendarEvent(Context context) {
    
           ContentResolver contentResolver = context.getContentResolver();
           cursor = contentResolver.query(Uri.parse("content://com.android.calendar/events"), (new String[] { "_id", "title", "organizer", "dtstart", "dtend"}), null, null, null);
    
           List<GoogleCalendar> gCalendar = new ArrayList<GoogleCalendar>();
            try {
    
                if (cursor.getCount() > 0) {
                    while (cursor.moveToNext()) {
                        GoogleCalendar googleCalendar = new GoogleCalendar();
    
                        int event_ID = cursor.getInt(0);
                        googleCalendar.setEvent_id(event_ID);
                        String title = cursor.getString(1);
                        googleCalendar.setTitle(title);
                        String mOrganizer = cursor.getString(2);
                        googleCalendar.setOrganizer(mOrganizer);
                        String dtStart = cursor.getString(3);
                        googleCalendar.setDtstart(dtStart);
                        String dtEnd = cursor.getString(4);
                        googleCalendar.setDtend(dtEnd);
                        gCalendar.add(googleCalendar);
                        Log.d("CaledarM",googleCalendar.getTitle()+" name = "+googleCalendar.getOrganizer()+" dateStart = "+googleCalendar.getDtstart()+" Size = " + gCalendar.size());
                    }
                }
            } catch (AssertionError ex) {
                ex.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    

    //类GoogleCalendar()

    public class GoogleCalendar {
    
        private int event_id;
        private String title,
                organizer,
                dtstart,
                dtend;
    
        public GoogleCalendar()
        {
        }
    
        public int getEvent_id() {
            return event_id;
        }
    
        public void setEvent_id(int calendar_id) {
            event_id = calendar_id;
        }
    
        public String getTitle() {
            return title;
        }
    
        public void setTitle(String title) {
            this.title = title;
        }
    
        public String getOrganizer() {
            return organizer;
        }
    
        public void setOrganizer(String description) {
            this.organizer = description;
        }
    
        public String getDtstart() {
            return dtstart;
        }
    
        public void setDtstart(String dtstart1) {
            this.dtstart = dtstart1;
        }
    
        public String getDtend() {
            return dtend;
        }
    
        public void setDtend(String dtend1) {
            this.dtend = dtend1;
        }
    }
    
        3
  •  0
  •   user2841300    12 年前

    使用此代码获取每日事件,

    public static void readCalendarEvent(Context context) throws ParseException {
    
            ContentResolver contentResolver = context.getContentResolver();
            Calendar calendar = Calendar.getInstance();
            String dtstart = "dtstart";
            String dtend = "dtend";
    
    
            SimpleDateFormat    displayFormatter = new SimpleDateFormat("MMMM dd, yyyy (EEEE)");
    
             stime=displayFormatter.format(calendar.getTime());     
    
            SimpleDateFormat startFormatter = new SimpleDateFormat("MM/dd/yy");
            String dateString = startFormatter.format(calendar.getTime());
    
            long after = calendar.getTimeInMillis();
            SimpleDateFormat formatterr = new SimpleDateFormat("hh:mm:ss MM/dd/yy");
            Calendar endOfDay = Calendar.getInstance();
            Date dateCCC = formatterr.parse("23:59:59 " + dateString);
            endOfDay.setTime(dateCCC);
    
    
    
    
    
    
        cursor = contentResolver.query(Uri.parse("content://com.android.calendar/events"), (new String[] { "calendar_id", "title", "description", "dtstart", "dtend","eventTimezone", "eventLocation" }), "(" + dtstart + ">" + after + " and " + dtend + "<" + endOfDay.getTimeInMillis() + ")", null, "dtstart ASC");
    
    
            /*String[] COLS={"calendar_id", "title", "description", "dtstart", "dtend","eventTimezone", "eventLocation"};
    
            cursor = contentResolver.query(
    
    
                    CalendarContract.Events.CONTENT_URI, COLS,null, null, null);*/
    
            gCalendar = new ArrayList<GoogleCalendar>();
            try {
    
    
                if (cursor.getCount() > 0) {
    
    
                    while (cursor.moveToNext()) {
                        GoogleCalendar googleCalendar = new GoogleCalendar();
                        gCalendar.add(googleCalendar);
                        int calendar_id = cursor.getInt(0);
                        googleCalendar.setCalendar_id(calendar_id);
                        String title = cursor.getString(1);
                        googleCalendar.setTitle(title);
                        String description = cursor.getString(2);
                        googleCalendar.setDescription(description);
                        String dtstart1 = cursor.getString(3);
                         dt=convertDate(dtstart1,"hh:mm:ss");
                        googleCalendar.setDtstart(dt);                                      
                        String dtend1 = cursor.getString(4);
                        googleCalendar.setDtend(dtend1);                                                            
                        String eventTimeZone=cursor.getString(5);
                        googleCalendar.setEventTimeZone(eventTimeZone);
                        String eventlocation = cursor.getString(6);                 
                        googleCalendar.setEventlocation(eventlocation);
    
                    }
                }
            } catch (AssertionError ex) {
                ex.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }