我无法使用日历提供程序向系统日历添加多个事件

问题描述

我不能使用日历提供程序添加多个项目

 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 (将#修改为@)