Я создаю событие календаря программно (на платформе Android).
Вот мой кусок кода:
Здесь пользователь имеет право выбрать план дата (planDate.value
) , время начала (planStartTime.value
) , время окончания (planEndTime.value
) и ввести план имя (planName.value
)
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)
}
}
Когда я пытаюсь создать событие, на нескольких устройствах события создаются успешно и остаются.
Но в некоторых устройствах (например, Samsung Galaxy J7 Prime) события не создаются вообще. Устройство, на котором события не созданы, я получаю eventID после метода вставки.
var eventUri: Uri = context.contentResolver.insert(CalendarContract.Events.CONTENT_URI, values)
В Huawei CAG-L22
событие создается, но через несколько секунд оно исчезает из календаря.
Я использую один и тот же код для всех этих устройств.
Может кто-нибудь помочь мне с этим? Пожалуйста, дайте мне знать, если я делаю что-то не так.
Заранее спасибо.