【问题标题】:Add synced events to google calendar将同步的事件添加到谷歌日历
【发布时间】:2014-01-19 00:08:11
【问题描述】:

我创建了一个 android 应用程序,可以将事件添加到我的任何 Google 日历中。到目前为止它有效,但我创建的事件仅在我的本地日历应用程序中可见,而不是在网络上。这是我用来插入事件的代码:

ContentResolver contentResolver = getContentResolver();
for (Date date : getDates()) {
    ContentValues values = new ContentValues();
    values.put(Events.CALENDAR_ID, calendar.getId());
    values.put(Events.TITLE, type.getName());
    values.put(Events.DTSTART, buildStartDate(date));
    values.put(Events.DTEND, buildEndDate(date));
    values.put(Events.ALL_DAY, 0);
    values.put(Events.EVENT_TIMEZONE, TimeZone.getDefault().getID());
    Uri event = contentResolver.insert(
                    CalendarContract.Events.CONTENT_URI, values);
    Toast.makeText(getApplicationContext(),
                    "Inserted event: " + event.toString(),
                    Toast.LENGTH_LONG).show();
}

caledar.getId() 返回我之前选择的日历的 ID。 buildStartDatebuildEndDate 创建开始和结束日期,并以毫秒为单位返回。 type.getName() 只返回一个用作标题的字符串。

有谁知道为什么这些事件只显示在我的本地日历应用程序中?当我使用日历应用插入新事件时,它会同步到网络,因此同步确实有效。

【问题讨论】:

    标签: java android calendar google-calendar-api


    【解决方案1】:

    我看不到你的SyncAdapter。这是必需的。以下代码可能对您有所帮助。

    static Uri asSyncAdapter(Uri uri, String account, String accountType) {
    return uri.buildUpon()
        .appendQueryParameter(android.provider.CalendarContract.CALLER_IS_SYNCADAPTER,"true")
        .appendQueryParameter(Calendars.ACCOUNT_NAME, account)
        .appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType).build();
    

    }

    linkthis

    谢谢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-16
      • 1970-01-01
      • 2017-10-12
      • 1970-01-01
      • 1970-01-01
      • 2012-02-13
      相关资源
      最近更新 更多