Calendar SyncAdapter :: Only sync adapters may write to account_name

在做Calendar SyncAdapter的时候 
 

往Calendar表中插入Account

往Event表中插入 _sync_id 

的时候  遇到这种错误:


Only sync adapters may write to account_name

Only sync adapters may write to _sync_id


解决方法是在

Calendars.CONTENT_URI

Events.CONTENT_URI

后面追加上

(CalendarContract.CALLER_IS_SYNCADAPTER, "true")


具体代码为:

  public static Uri asSyncAdapter(Uri uri, String accountName, String accountType) {
    return uri.buildUpon()
        .appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
        .appendQueryParameter(Calendars.ACCOUNT_NAME, accountName)
        .appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType).build();
  }


accountName & accountType 是与账户相关的数据
如果完成了账户的管理
这两个值很容易得到。

你可能感兴趣的:(android,calendar,SyncAdapter)