我正在尝试为我的事件创建ExtendedProperties并在下面遇到此错误:
02-06 09:43:04.484: E/AndroidRuntime(9530): FATAL EXCEPTION: IntentService[AsyncQueryServiceHelper]
02-06 09:43:04.484: E/AndroidRuntime(9530): java.lang.IllegalArgumentException: Only sync adapters may write using content://com.android.calendar/extendedproperties
02-06 09:43:04.484: E/AndroidRuntime(9530): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:167)
02-06 09:43:04.484: E/AndroidRuntime(9530): at android.database.DatabaseUtils.readExceptionWithOperationApplicationExceptionFromParcel(DatabaseUtils.java:160)
02-06 09:43:04.484: E/AndroidRuntime(9530): at android.content.ContentProviderProxy.applyBatch(ContentProviderNative.java:484)
02-06 09:43:04.484: E/AndroidRuntime(9530): at android.content.ContentProviderClient.applyBatch(ContentProviderClient.java:227)
02-06 09:43:04.484: E/AndroidRuntime(9530): at android.content.ContentResolver.applyBatch(ContentResolver.java:954)
02-06 09:43:04.484: E/AndroidRuntime(9530): at com.android.calendar.iselection.AsyncQueryServiceHelper.onHandleIntent(AsyncQueryServiceHelper.java:327)
02-06 09:43:04.484: E/AndroidRuntime(9530): at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
02-06 09:43:04.484: E/AndroidRuntime(9530): at android.os.Handler.dispatchMessage(Handler.java:99)
02-06 09:43:04.484: E/AndroidRuntime(9530): at android.os.Looper.loop(Looper.java:176)
02-06 09:43:04.484: E/AndroidRuntime(9530): at android.os.HandlerThread.run(HandlerThread.java:61)
我的代码如下:
ContentValues customerContentValues = new ContentValues();
Uri uriExtendedProperties = Uri.parse("content://com.android.calendar/extendedproperties");
customerContentValues.put(Events._ID,model.mId);
customerContentValues.put("ClientIdname", model.mCustomerName);
customerContentValues.put("RdvType", model.mEventType);
customerContentValues.put("RdvEmplacement", model.mEmplacement);
customerContentValues.put("RdvAdresse", model.mAddresse);
ops.add(ContentProviderOperation.newInsert(uriExtendedProperties).withValues(customerContentValues).build());
有什么我错过的吗?需要一些推动..提前谢谢
是否有人告诉我有关同步适配器的更多信息因为我真的被卡住了......任何建议都会受到欢迎。
答案 0 :(得分:0)
ExtendedProperties
与普通的Evnets
和Attendees
表略有不同。
为了写信给你,你需要修改你正在使用的uri并添加' caller_is_syncadapter ',' account_name '和' account_type '参数。
这是一个例子:
Uri extendedPropUri = ExtendedProperties.CONTENT_URI;
extendedPropUri = extendedPropUri.buildUpon()
.appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER,"true")
.appendQueryParameter(Calendars.ACCOUNT_NAME, this.accountName)
.appendQueryParameter(Calendars.ACCOUNT_TYPE, this.accountType).build();
然后插入看起来像:
ContentValues extraDataValues = new ContentValues();
extraDataValues.put(ExtendedProperties.EVENT_ID, eventId);
extraDataValues.put(ExtendedProperties.NAME, key);
extraDataValues.put(ExtendedProperties.VALUE, value);
context.getContentResolver().insert(extendedPropUri, extraDataValues);