Android: невозможно добавить событие в календарь в andorid - PullRequest
1 голос
/ 27 сентября 2019

Android: Я пытаюсь добавить событие в календарь Android без открытия приложения календаря Android (Implicit Intent).Получение событияId успешно после вызова ниже функции onAddEventClicked (), но событие не сохраняется и не отображается в приложении календаря.

Кто-нибудь, пожалуйста, помогите мне.Заранее спасибо.

AndroidMainfest.xml
    <uses-permission android:name="android.permission.READ_CALENDAR"/>
    <uses-permission android:name="android.permission.WRITE_CALENDAR"/>  



 fun onAddEventClicked(){
        val calID: Long = 3
        val startMillis: Long = Calendar.getInstance().run {
            set(2019, 10, 3, 7, 30)
            timeInMillis
        }
        val endMillis: Long = Calendar.getInstance().run {
            set(2019, 10, 5, 8, 45)
            timeInMillis
        }


        val values = ContentValues().apply {
            put(CalendarContract.Events.DTSTART, startMillis)
            put(CalendarContract.Events.DTEND, endMillis)
            put(CalendarContract.Events.TITLE, "My birthday")
            put(CalendarContract.Events.DESCRIPTION, "Celebration day")
            put(CalendarContract.Events.CALENDAR_ID, calID)
            put(CalendarContract.Events.EVENT_TIMEZONE,  TimeZone.getDefault().id)
        }
        val uri: Uri = contentResolver.insert(CalendarContract.Events.CONTENT_URI, values)

        val eventID: Long = uri.lastPathSegment.toLong()
    }

1 Ответ

0 голосов
/ 27 сентября 2019

Это то, что я придумал, чтобы добавить событие в календарь в своем приложении:

    Calendar calAppointment = Calendar.getInstance();
    calAppointment.setTime(appointment.getAppointmentDate());
    calAppointment.set(Calendar.HOUR_OF_DAY, 12);
    calAppointment.set(Calendar.MINUTE, 30);
    Intent intent = new Intent(Intent.ACTION_INSERT);
    intent.setType("vnd.android.cursor.item/event");
    intent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, calAppointment.getTime().getTime());
    intent.putExtra(CalendarContract.Events.EVENT_TIMEZONE, "Your Timezone");
    intent.putExtra(CalendarContract.Events.TITLE, "Title");
    intent.putExtra(CalendarContract.Events.DESCRIPTION, "Your description");
    intent.putExtra(CalendarContract.Events.EVENT_LOCATION, "Your location");
    if (intent.resolveActivityInfo(getActivity().getPackageManager(), 0) != null) {
        startActivity(intent);
    }

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...