Android:未创建CalendarProvider事件,有时在创建后消失(在少数设备中)

时间:2019-07-09 05:37:35

标签: android kotlin android-calendar

我正在以编程方式创建日历事件(Android平台)。

以下是我的代码: 在这里,用户有权选择计划 date(planDate.value开始时间(planStartTime.value结束时间({{1} }),然后输入计划名称(planEndTime.value

planName.value

当我尝试创建事件时,在少数设备中,事件会成功创建并保留。

但是在很少的设备(例如Samsung Galaxy J7 Prime)中根本不会创建事件。没有创建事件的设备,在insert方法之后我得到了eventID。

private fun createCalendarEvent(context: Context) {
        val startDateObj = SimpleDateFormat(simpleDateFormateMM, Locale.US).parse("${planDate.value} ${planStartTime.value}") // Here I am fetching data selected by user
        val endDateObj = SimpleDateFormat(simpleDateFormateMM, Locale.US).parse("${planDate.value} ${planEndTime.value}")

        val calendar = Calendar.getInstance()
        calendar.time = startDateObj

        val startMillis: Long = Calendar.getInstance().run {
            // month starts from 0
            set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE))
            timeInMillis
        }
        calendar.time = endDateObj
        val endMillis: Long = Calendar.getInstance().run {
            set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE))
            timeInMillis
        }

        val values = ContentValues().apply {
            put(CalendarContract.Events.DTSTART, startMillis)
            put(CalendarContract.Events.DTEND, endMillis)
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                put(CalendarContract.Events.CALENDAR_ID, 3)
            } else {
                put(CalendarContract.Events.CALENDAR_ID, 1)
            }
            put(CalendarContract.Events.TITLE, planName.value)
            put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().id)
        }
        if (!PermissionUtils(context).checkPermission(PermissionUtils.WRITE_CALENDAR)) {
            context.contentResolver.insert(CalendarContract.Events.CONTENT_URI, values)
        }
    }

var eventUri: Uri = context.contentResolver.insert(CalendarContract.Events.CONTENT_URI, values) 中创建了事件,但几秒钟后,事件从日历中消失了。

我为所有这些设备使用相同的代码。

有人可以帮我吗?如果我做错了任何事情,请告诉我。

谢谢。

0 个答案:

没有答案