2017-07-20 4 views
0

Voici mon code et je veux savoir quelle est la valeur de "CalendarContract.Events.CALENDAR_ID"? Ce code fonctionne sur Pre Android N Os mais dans Nougat si je mets "1" en valeur cela crée un évènement dans un champ spécifique (Rappel, Anniversaire, Fête etc.) et cela varie d'un utilisateur à l'autre. Donc, si je mets "5" en valeur dans un appareil nougat, je pourrais obtenir une sortie correcte dans un appareil mais dans un autre téléphone cet événement pourrait être créé avec un rappel ou un jour férié et être supprimé automatiquement en quelques secondes.Que devrait être CALENDAR_ID lors de l'ajout d'un événement au calendrier dans Android?

 ContentResolver cr = context.getContentResolver(); 
     ContentValues values = new ContentValues(); 
     values.put(CalendarContract.Events.DTSTART, startMillis); 
     values.put(CalendarContract.Events.DTEND, endMillis); 
     values.put(CalendarContract.Events.TITLE, title); 
     values.put(CalendarContract.Events.CALENDAR_ID, 1); 
     values.put(CalendarContract.Events.EVENT_TIMEZONE, 
     Calendar.getInstance().getTimeZone().getID()); 
     Uri uri=cr.insert(CalendarContract.Events.CONTENT_URI, 
     values); 
     long eventId = Long.parseLong(uri.getLastPathSegment()); 

Répondre

1

La valeur de CALENDAR_ID pour 3 pour les appareils Android M et supérieurs et la valeur 1 pour les versions inférieures à M sont valables pour la plupart des appareils.

Mais cela crée des problèmes pour peu de devcives. Comme actuellement, je suis confronté à un problème pour les appareils Lenove avec android verion 6.0 qui prend la valeur 1 pour la création d'événements appropriés.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){ 
    values.put(Events.CALENDAR_ID, 3); 
}else{ 
    values.put(Events.CALENDAR_ID, 1); 
    } 
+0

Veuillez vous référer à https://stackoverflow.com/questions/35776265/android-create-calendar-event-always-as-birthday – natashadawra