J'ai vérifié partout comment créer un nouveau calendrier à partir d'une application Android. La seule façon que j'ai vu est l'utilisation de la nouvelle API de calendrier dans la dernière version de l'API, mais cela ne semble fonctionner que si vous utilisez CalendarContract.ACCOUNT_TYPE_LOCAL
. Il ne vous permettra pas de créer un calendrier attaché au compte Google des utilisateurs, synchronisé avec Google Calendar
. Il n'apparaît pas dans la liste de calendrier en ligne au Google Calendar. J'ai essayé d'utiliser le type de compte du compte, mais cela ne fonctionne pas. Il ne semble pas produire d'erreur cependant. Le résultat revient bien.Android Ajouter un nouveau calendrier
values.put(CalendarContract.Calendars.ACCOUNT_TYPE, accountType);
Voici le code complet pour ajouter un nouveau calendrier local en utilisant le (type de compte commenté) Calendar API
et SYNCADAPTER
. Est-ce que quelqu'un sait si ce que j'essaie de faire est même possible?
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);
Veuillez répondre à votre question, si votre problème est résolu. Vous obtiendrez un badge et beaucoup recevront une aide gratuite. –
Avez-vous une solution à votre question? Je cherche la même chose. BTW bonne question. –