Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[C#] Event toevoegen aan agenda

Pagina: 1
Acties:

  • Noiz
  • Registratie: September 2004
  • Laatst online: 23-09 09:01
Om te beginnen, ik werk in Xamarin voor wat het uitmaakt.

Nu mijn probleem waar ik met mijn huidige kennis gewoon niet uit kom. Ik heb een redelijk simpele app waar ik de wedstrijden in show van mijn voetbalteam. Middels een button moet het mogelijk worden om deze toe te voegen aan een agenda. Nu heb ik hiervoor 2 verschillende functies (in een aparte class die vanuit 2 andere files ofwel 1 ListRecord mee krijgt ofwel de volledige lijst) maar geen van beide doet precies wat ik wil. De 1e functie werkt middels intent:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public void addToCalendar(List<ListRecord> calendar, Activity activity)
        {
            foreach (ListRecord item in calendar) {
                var calendarsUri = CalendarContract.Calendars.ContentUri;

                TimeSpan ts = new TimeSpan (+2, 0, 0);
                DateTime eindtijd = item.datumtijd2 + ts;

                Intent intent = new Intent(Intent.ActionEdit);
                intent.SetData(CalendarContract.Events.ContentUri);
                intent.SetType("vnd.android.cursor.item/event");

                intent.PutExtra(CalendarContract.Events.InterfaceConsts.Title, item.teamthuis + " - " + item.teamuit);
                intent.PutExtra(CalendarContract.Events.InterfaceConsts.EventLocation, item.accommodatie);
                intent.PutExtra(CalendarContract.Events.InterfaceConsts.Dtstart, MilliTimeStamp(item.datumtijd2));
                intent.PutExtra(CalendarContract.Events.InterfaceConsts.Dtend, MilliTimeStamp(eindtijd));

                intent.PutExtra(CalendarContract.Events.InterfaceConsts.EventTimezone, "UTC+1");
                intent.PutExtra(CalendarContract.Events.InterfaceConsts.EventEndTimezone, "UTC+1");

                activity.StartActivityForResult (intent, 0); 
            }
        }

public double MilliTimeStamp(DateTime TheDate)
        {
            DateTime d1 = new DateTime(1970, 1, 1);
            DateTime d2 = TheDate.ToUniversalTime();
            TimeSpan ts = new TimeSpan(d2.Ticks - d1.Ticks);

            return ts.TotalMilliseconds;
        }

Op het moment dat ik dit stuk code gebruik ga ik naar het scherm van een event toevoegen, waarbij ik op annuleren of gereed kan klikken en ik eventueel een andere kalender kan kiezen. Alleen wordt de Dtstart en Dtend niet doorgegeven en wordt de tijd gezet op het eerstvolgende hele of halve uur. Voor wat ik met de app wil zou het oplossen van dit stuk code al genoeg zijn.
Het mooiste zou zijn als ik dit stuk code werkend krijg zoals ik het in gedachte heb.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public void addToCalendar(List<ListRecord> calendar, Activity activity)
        {
            foreach (ListRecord item in calendar) {
                ContentValues eventValues = new ContentValues ();
                TimeSpan ts = new TimeSpan (+1, 45, 0);
                DateTime eindtijd = item.datumtijd2 + ts;

                eventValues.Put (CalendarContract.Events.InterfaceConsts.CalendarId, 1);
                eventValues.Put (CalendarContract.Events.InterfaceConsts.Title, item.teamthuis + " - " + item.teamuit);
                eventValues.Put (CalendarContract.Events.InterfaceConsts.Description, item.accommodatie);
                eventValues.Put (CalendarContract.Events.InterfaceConsts.Dtstart, MilliTimeStamp(item.datumtijd2));
                eventValues.Put (CalendarContract.Events.InterfaceConsts.Dtend, MilliTimeStamp(eindtijd));

                eventValues.Put (CalendarContract.Events.InterfaceConsts.EventTimezone, "UTC+1");
                eventValues.Put (CalendarContract.Events.InterfaceConsts.EventEndTimezone, "UTC+1");

                var uri = Android.App.Application.Context.ContentResolver.Insert (CalendarContract.Events.ContentUri, eventValues);
            }
        }

Dit stuk code voegt de events netjes toe aan mijn gmail account. Dit is dan natuurlijk doordat deze CalendarId 1 heeft. Tevens worden er dubbele entries gemaakt doordat er geen check in zit. Ik heb al ontzettend veel gezocht om oplossingen te vinden voor mijn problemen maar wat ik tot nu toe heb gevonden heb ik niet werkend gekregen (mede door mijn beperkte kennis :P).

Nu zou deze 2e functie uiteindelijk mijn voorkeur hebben, alleen zal er iets van een kalender check in moeten komen (of 1 moet altijd gmail zijn, dan is het prima) en er zal een check in moeten zodat er geen duplicaten gemaakt worden. Zit er nu al een hele tijd aan te kloten en door de vele verschillende oplossingen die ik vind, zie ik door de bomen het bos niet meer. Mijn dank is groot aan degene die mijn verder kan helpen.