Ich habe überall nach Möglichkeiten gesucht, einen neuen Kalender aus einer Android-App heraus zu erstellen. Der einzige Weg, den ich gesehen habe, ist die Verwendung der neuen Kalender-API in der neuesten API-Version, ABER das scheint nur zu funktionieren, wenn Sie CalendarContract.ACCOUNT_TYPE_LOCAL
verwenden. Sie können keinen Kalender erstellen, der an das Google-Konto des Nutzers angehängt ist und mit Google Calendar
synchronisiert wird. Es erscheint nicht in der Kalenderliste online unter Google Calendar.Android Hinzufügen eines neuen Kalenders
Ich habe versucht, die Kontoart aus dem Konto, aber das funktioniert nicht. Es scheint jedoch keinen Fehler zu erzeugen. Das Ergebnis kommt gut zurück.
values.put(CalendarContract.Calendars.ACCOUNT_TYPE, accountType);
Hier ist der vollständige Code für einen neuen lokalen Kalender Hinzufügen der Calendar API
und SYNCADAPTER
(Kontotyp Kommentar gesetzt) verwendet wird. Weiß jemand, ob das, was ich versuche, überhaupt möglich ist?
AccountManager manager = AccountManager.get(context);
Account[] accounts = manager.getAccountsByType("com.google");
String accountName = "";
String accountType = "";
for (Account account : accounts) {
accountName = account.name;
accountType = account.type;
break;
}
ContentResolver cr = context.getContentResolver();
ContentValues values = new ContentValues();
values.put(CalendarContract.Calendars.ACCOUNT_NAME, accountName);
//values.put(CalendarContract.Calendars.ACCOUNT_TYPE, accountType);
values.put(CalendarContract.Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL);
values.put(CalendarContract.Calendars.NAME, DaysSince.CAL_NAME);
values.put(CalendarContract.Calendars.CALENDAR_DISPLAY_NAME, DaysSince.CAL_NAME);
values.put(CalendarContract.Calendars.SYNC_EVENTS, 1);
values.put(CalendarContract.Calendars.VISIBLE, 1);
values.put(CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL, CalendarContract.Calendars.CAL_ACCESS_OWNER);
values.put(CalendarContract.Calendars.OWNER_ACCOUNT, accountName);
values.put(CalendarContract.Calendars.DIRTY, 1);
values.put(CalendarContract.Calendars.CALENDAR_TIME_ZONE, TimeZone.getDefault().getID());
Uri calUri = CalendarContract.Calendars.CONTENT_URI;
calUri = calUri.buildUpon()
.appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
.appendQueryParameter(CalendarContract.Calendars.ACCOUNT_NAME, accountName)
.appendQueryParameter(CalendarContract.Calendars.ACCOUNT_TYPE, accountType)
.build();
Uri result = cr.insert(calUri, values);
Bitte beantworten Sie Ihre eigene Frage, wenn Ihr Problem gelöst ist. Sie erhalten ein Abzeichen und viele bekommen kostenlose/einfache Hilfe. –
Haben Sie eine Lösung für Ihre Frage? Ich suche nach dem gleichen. BTW gute Frage. –