2010-11-29 11 views
6

Je viens de faire une opération avec le fournisseur de contenu de calendrier, maintenant je manque au point d'afficher les événements pour la date particulière.Calendrier Android Événements

Je connais les événements URI pour la < version 2.1 et version 2.2, comme ci-dessous:

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 

Mes doutes sont:

  1. Comment récupérer tous les événements?
  2. Comment puis-je récupérer des événements pour une date donnée?

Alors s'il vous plaît, quelqu'un avec des connaissances sur le calendrier s'il vous plaît aidez-moi et partager vos connaissances à ce sujet.

Thanx

+0

vérifier: http: // stackoverflow.com/questions/26844770/how-to-get-access-to-the-calendars-on-a-android-phone –

Répondre

9

Ces exemples ne sont < = version 2.1;

d'abord; savoir quels calendriers existent

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(); 

Récupérer tous les événements, et événement particulier se fait en spécifiant plage
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); 

puis disons que vous souhaitez enregistrer les événements ID de calendrier avec ID = 1

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); 

     } 
+0

@ bbaja42 Merci beaucoup pour votre soutien, mais j'ai des doutes concernant cette ligne "/ instances/when ", où vous avez écrit ContentUris.appendId (constructeur, maintenant - DateUtils.MILLIS_PER_DAY * 10000) et ContentUris.appendId (builder, maintenant + DateUtils.MILLIS_PER_DAY * 10000); lignes, mais comment puis-je récupérer l'événement pour la DATE PARTICULIÈRE seulement ?? –

+1

@ bbaja42 MILLIS_PER_DAY n'est pas disponible avec ANDROID –

+0

@ pm-paresh-mayani vous avez raison; J'ai utilisé la bibliothèque supplémentaire pour cela – bbaja42

0

Utilisez ce code pour obtenir des événements quotidiens,

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

Qu'est-ce que GoogleCalendar? –