.NET MAUI: Kalendereintrag unter Android erstellen
Auf einen Blick
| Gilt für | .NET MAUI 9/10 bzw. .NET for Android; Android 8 bis 16 |
|---|---|
| Bereich | Softwareentwicklung |
| Dauer | ca. 20 Minuten |
| Rechte | Entwicklungsumgebung; Variante 2: Kalenderberechtigung des Benutzers |
| Stand | Oktober 2026 |
Einen Kalendereintrag unter Android erstellen – etwa für einen Servicetermin aus einer Außendienst-App – geht in .NET MAUI auf zwei Wegen: Am einfachsten öffnet die App den Kalender des Geräts mit vorausgefüllten Daten, und der Benutzer bestätigt. Soll der Termin ohne Rückfrage eingetragen werden, schreibt die App direkt über den CalendarContract von Android – dafür ist eine Laufzeitberechtigung nötig.

Variante 1: Kalender-App mit vorausgefülltem Termin öffnen (empfohlen)
Keine Berechtigung nötig, der Benutzer sieht und bestätigt den Termin. Der Code liegt in Platforms/Android oder wird mit #if ANDROID eingeschlossen:
#if ANDROID
using Android.Content;
using Android.Provider;
public static class AndroidKalender
{
public static void TerminVorschlagen(string titel, string ort, string beschreibung,
DateTimeOffset beginn, DateTimeOffset ende)
{
var intent = new Intent(Intent.ActionInsert)
.SetData(CalendarContract.Events.ContentUri)
.PutExtra(CalendarContract.ExtraEventBeginTime, beginn.ToUnixTimeMilliseconds())
.PutExtra(CalendarContract.ExtraEventEndTime, ende.ToUnixTimeMilliseconds())
.PutExtra(CalendarContract.Events.InterfaceConsts.Title, titel)
.PutExtra(CalendarContract.Events.InterfaceConsts.EventLocation, ort)
.PutExtra(CalendarContract.Events.InterfaceConsts.Description, beschreibung);
Platform.CurrentActivity?.StartActivity(intent);
}
}
#endif
ToUnixTimeMilliseconds() ersetzt die früher nötige Hilfsmethode zur Umrechnung von DateTime in Millisekunden.
Variante 2: Termin direkt eintragen
Schritt 1: Berechtigungen deklarieren
In Platforms/Android/AndroidManifest.xml:
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
Schritt 2: Berechtigung zur Laufzeit anfragen
var status = await Permissions.RequestAsync<Permissions.CalendarWrite>();
if (status != PermissionStatus.Granted)
{
await Shell.Current.DisplayAlertAsync("Kalender",
"Ohne Kalenderzugriff kann der Termin nicht eingetragen werden.", "OK");
return;
}
Für das Ermitteln des Zielkalenders zusätzlich Permissions.CalendarRead anfragen.
Schritt 3: Eintrag schreiben
#if ANDROID
using Android.Content;
using Android.Provider;
public static long TerminEintragen(long kalenderId, string titel,
DateTimeOffset beginn, DateTimeOffset ende)
{
var values = new ContentValues();
values.Put(CalendarContract.Events.InterfaceConsts.CalendarId, kalenderId);
values.Put(CalendarContract.Events.InterfaceConsts.Title, titel);
values.Put(CalendarContract.Events.InterfaceConsts.Dtstart, beginn.ToUnixTimeMilliseconds());
values.Put(CalendarContract.Events.InterfaceConsts.Dtend, ende.ToUnixTimeMilliseconds());
values.Put(CalendarContract.Events.InterfaceConsts.EventTimezone, TimeZoneInfo.Local.Id);
var uri = Platform.AppContext.ContentResolver!
.Insert(CalendarContract.Events.ContentUri, values);
return long.Parse(uri!.LastPathSegment!); // ID des neuen Termins
}
#endif
Die kalenderId ermitteln Sie per Abfrage von CalendarContract.Calendars.ContentUri (z. B. den ersten beschreibbaren Kalender des Google- oder Exchange-Kontos).
Hinweise
- Variante 1 bevorzugen: Weniger Berechtigungen bedeuten weniger Rückfragen in der Google-Play-Prüfung und mehr Vertrauen der Benutzer.
- Plattformübergreifend: Für Android und iOS bietet sich ein Community-Plugin für Kalenderzugriff an (z. B. Plugin.Maui.CalendarStore); unter iOS ist zusätzlich ein Nutzungshinweis in der
Info.plistnötig. - Zeitzonen: Termine immer als
DateTimeOffsetbzw. UTC übergeben, sonst verschieben sie sich bei Sommer-/Winterzeit. - Bei Außendienst- und Service-Apps mit Kalender- und Groupware-Anbindung unterstützt Sie die individuelle Softwareentwicklung von m.a.x. it.
Siehe auch
Links und Quellen
- Microsoft Learn: Berechtigungen in .NET MAUI
- Individuelle Softwareentwicklung und App-Entwicklung von m.a.x. it
Über m.a.x. it Die m.a.x. Informationstechnologie AG ist seit über 30 Jahren IT-Partner mittelständischer und großer Unternehmen in München und bietet maßgeschneiderte Lösungen und Services in den Bereichen Cloud, Cybersecurity, Netzwerk, Windows, Linux und Softwareentwicklung. Sie haben eine Frage zu diesem Artikel oder brauchen Unterstützung?
