问题描述
我不能使用日历提供程序添加多个项目
public static long addEvent(long calID,String title,String description,String duration,String location,String rrule,String rdate,Calendar beginTime,Calendar endTime) {
if (!hasAccess) {
return -1;
}
Context context = context2;
long startMillis = 0;
long endMillis = 0;
beginTime.add(Calendar.MONTH,-1);
endTime.add(Calendar.MONTH,-1);
startMillis = beginTime.getTimeInMillis();
endMillis = endTime.getTimeInMillis();
beginTime.setTimeZone(tz);
ContentResolver cr = context.getContentResolver();
ContentValues values = new ContentValues();
values.put(CalendarContract.Events.DTSTART,startMillis);
values.put(CalendarContract.Events.DTEND,endMillis);
values.put(CalendarContract.Events.TITLE,title);
values.put(CalendarContract.Events.DESCRIPTION,description);
values.put(CalendarContract.Events.CALENDAR_ID,calID);
if (duration != null)
values.put(CalendarContract.Events.DURATION,duration);
if (location != null)
values.put(CalendarContract.Events.EVENT_LOCATION,location);
if (rdate != null)
values.put(CalendarContract.Events.RDATE,rdate);
if (rrule != null)
values.put(CalendarContract.Events.RRULE,rrule);
values.put(CalendarContract.Events.EVENT_TIMEZONE,String.valueOf(beginTime.getTimeZone()));
Uri uri = cr.insert(CalendarContract.Events.CONTENT_URI,values);
long eventID = Long.parseLong(uri.getLastPathSegment());
obtainData(context);
return eventID;
}
在第一次插入日历后,如果调用 addEvent 方法会出现以下错误
2020-12-25 17:32:28.920 2230-16266/com.google.android.gms.persistent E/sqliteDatabase: Error inserting flex_time=3156000 job_id=-1 period=6314000 source=16 requires_charging=0 preferred_network_type=1 target_class=com.google.android.gms.measurement.PackageMeasurementTaskService user_id=0 target_package=com.google.android.gms tag=Measurement.PackageMeasurementTaskService.UPLOAD_TASK_TAG task_type=0 required_idleness_state=0 service_kind=0 source_version=202414000 persistence_level=1 preferred_charging_state=1 required_network_type=0 runtime=1608906748901 retry_strategy={"maximum_backoff_seconds":{"3600":0},"initial_backoff_seconds":{"30":0},"retry_policy":{"0":0}} last_runtime=0
android.database.sqlite.sqliteConstraintException: UNIQUE constraint Failed: pending_ops.tag,pending_ops.target_class,pending_ops.target_package,pending_ops.user_id (code 2067 sqlITE_CONSTRAINT_UNIQUE)
at android.database.sqlite.sqliteConnection.nativeExecuteForLastInsertedRowId(Native Method)
at android.database.sqlite.sqliteConnection.executeForLastInsertedRowId(sqliteConnection.java:879)
at android.database.sqlite.sqliteSession.executeForLastInsertedRowId(sqliteSession.java:790)
at android.database.sqlite.sqliteStatement.executeInsert(sqliteStatement.java:88)
at android.database.sqlite.sqliteDatabase.insertWithOnConflict(sqliteDatabase.java:1599)
at android.database.sqlite.sqliteDatabase.insert(sqliteDatabase.java:1468)
at aqui.a(:com.google.android.gms@202414022@20.24.14 (040700-319035315):175)
at aqtk.a(:com.google.android.gms@202414022@20.24.14 (040700-319035315):182)
at aqtk.a(:com.google.android.gms@202414022@20.24.14 (040700-319035315):23)
at aqtk.a(:com.google.android.gms@202414022@20.24.14 (040700-319035315):177)
at aqpu.run(:com.google.android.gms@202414022@20.24.14 (040700-319035315):9)
at soy.b(:com.google.android.gms@202414022@20.24.14 (040700-319035315):12)
at soy.run(:com.google.android.gms@202414022@20.24.14 (040700-319035315):7)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at sux.run(:com.google.android.gms@202414022@20.24.14 (040700-319035315):0)
at java.lang.Thread.run(Thread.java:919)
我尝试在插入之间添加 3 秒延迟,但没有奏效。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)