在日历中添加提醒时android.database.sqlite.SQLiteException

时间:2019-03-06 11:07:30

标签: android sqlite calendar reminders

 @SuppressLint({"RxLeakedSubscription", "RxSubscribeOnError"})
public static long pushAppointmentsToCalender(Activity curActivity, String title, String addInfo, String place, int status, long startDate, boolean needReminder) {
    /***************** Event: note(without alert) *******************/

    ContentResolver cr = curActivity.getContentResolver();
    ContentValues values = new ContentValues();
    values.put(CalendarContract.Events.DTSTART, startDate);
    values.put(CalendarContract.Events.DTEND, startDate);
    values.put(CalendarContract.Events.TITLE, title);
    values.put(CalendarContract.Events.DESCRIPTION, addInfo);
    values.put(CalendarContract.Events.CALENDAR_ID, startDate);
    values.put(CalendarContract.Events.EVENT_TIMEZONE, "Asia/Calcutta");
    @SuppressLint("MissingPermission") Uri uriEvent = cr.insert(CalendarContract.Events.CONTENT_URI, values);

    long eventID = Long.parseLong(uriEvent.getLastPathSegment());
    try {
        if (needReminder) {
            ContentResolver crreminder = curActivity.getContentResolver();
            ContentValues valuesreminder = new ContentValues();
            valuesreminder.put(CalendarContract.Reminders.EVENT_ID, eventID);
            valuesreminder.put(CalendarContract.Reminders.MINUTES, 15);
            valuesreminder.put(CalendarContract.Reminders.METHOD, CalendarContract.Reminders.METHOD_ALERT);
            @SuppressLint("MissingPermission") Uri uri = crreminder.insert(CalendarContract.Reminders.CONTENT_URI, valuesreminder);
        }
    }catch (Exception e){
        e.printStackTrace();
    }
    return eventID;
}

我在日志中遇到的错误是

2019-03-06 16:29:16.935 23021-23021/com.medikoe.connect.debug W/System.err: android.database.sqlite.SQLiteException
2019-03-06 16:29:16.936 23021-23021/com.medikoe.connect.debug 

事件ID已成功创建,但是在插入uri进行提醒时会创建sqlite exception。请帮忙!

2 个答案:

答案 0 :(得分:0)

  

更新:我发现在两种情况下都可能发生此错误。

  1. 如果您未在自己的计算机中配置Google日历应用 手机/模拟器会出现此错误。然后,请确保在运行应用程序之前,使用gmail帐户配置Google日历应用程序。

  2. 如果您将错误的格式或错误的时间传递给事件或提醒。使用具有正确时区的Unix时间。

答案 1 :(得分:0)

最近,我也遇到了同样的问题。终于找到解决办法了。

首先,您必须从设备中找到所有登录的 gmail id,然后选择任何一个 gmail 帐户并找到其日历 id。之后,您必须将该 id 传递给这样的事件查询....

<块引用>

values.put(Events.CALENDAR_ID, calendarId);

最后调用你的函数

请参阅以下查找电子邮件 ID 的方法...

-rwxr-xr-x@