0

このトピックのコードを使用してカレンダーを作成しようとしています

 private static void  createCalendar( Context mContext, Account account)
{
    final ContentValues v = new ContentValues();
    v.put(CalendarContract.Calendars.NAME,"TEST");
    v.put(CalendarContract.Calendars.CALENDAR_DISPLAY_NAME, "TEST");
    v.put(CalendarContract.Calendars.ACCOUNT_NAME, account.name);
    v.put(CalendarContract.Calendars.ACCOUNT_TYPE, account.type);
    v.put(CalendarContract.Calendars.CALENDAR_COLOR, Color.GREEN);
    v.put(CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL, CalendarContract.Calendars.CAL_ACCESS_OWNER);
    v.put(CalendarContract.Calendars.OWNER_ACCOUNT, account.name);
   // v.put(CalendarContract.Calendars._ID, 123);
    v.put(CalendarContract.Calendars.SYNC_EVENTS, 1);
    v.put(CalendarContract.Calendars.VISIBLE, 1);
    Uri creationUri = asSyncAdapter(CalendarContract.Calendars.CONTENT_URI, account.name, account.type);
    Uri calendarData = mContext.getContentResolver().insert(creationUri, v);
    long id = Long.parseLong(calendarData.getLastPathSegment());
}
private static Uri asSyncAdapter(Uri uri, String account, String accountType)
{
    return uri.buildUpon().appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true").appendQueryParameter
            (CalendarContract.Calendars.ACCOUNT_NAME,account)
            .appendQueryParameter(CalendarContract.Calendars.ACCOUNT_TYPE, accountType) .build();

}

そして電話をかける:

createCalendar(c,  AccountManager.get(c).getAccountsByType("com.google")[0]); // i've checked - it's correct account to add calendar

次に、データを取得しますContentResolver

final ContentResolver cr = ctx.getContentResolver();
    Cursor cursor ;
    cursor = cr.query(Uri.parse("content://com.android.calendar/calendars"),null, null, null, null);

カーソルに新しいカレンダーが表示されます。しかし:

  • グーグルアカウントに表示されない

  • しばらくすると削除されます(同期のためだと思います)

5.1.1でテスト済み

プログラムで自分のアカウントにカレンダーを作成するにはどうすればよいですか?

4

1 に答える 1

1

calendar.insert を使用して別のカレンダーを作成してみてください。

Java を使用しているため、次のコード スニペットが役立つと思います。

import com.google.api.services.calendar.Calendar;

// ...

// Initialize Calendar service with valid OAuth credentials
Calendar service = new Calendar.Builder(httpTransport, jsonFactory, credentials)
    .setApplicationName("applicationName").build();

// Create a new calendar
com.google.api.services.calendar.model.Calendar calendar = new Calendar();
calendar.setSummary("calendarSummary");
calendar.setTimeZone("America/Los_Angeles");

// Insert the new calendar
Calendar createdCalendar = service.calendars().insert(calendar).execute();

System.out.println(createdCalendar.getId());

Try -itを試してみて、機能するかどうかを確認します。

于 2016-09-10T18:03:16.713 に答える