Невозможно получить сведения о напоминании из календаря устройства - PullRequest
1 голос
/ 23 марта 2020

Я могу получить все события из календаря устройства из приведенного ниже кода:

 @SuppressLint("MissingPermission")
    private fun getAccountCalendarEvents(selectedEmail: String) {
        var count = 0
        val projectionArray =
            arrayOf(
                CalendarContract.Calendars._ID,
                CalendarContract.Events.TITLE,
                CalendarContract.Events.DESCRIPTION,
                CalendarContract.Events.DTSTART,
                CalendarContract.Events.DTEND,
                CalendarContract.Events.ALL_DAY,
                CalendarContract.Events.EVENT_LOCATION,
                CalendarContract.Attendees.ORGANIZER,
                CalendarContract.Events.EVENT_TIMEZONE,
                CalendarContract.Events.ACCOUNT_TYPE,
                CalendarContract.Calendars.ACCOUNT_NAME
            )

        val startTime = Calendar.getInstance()
        startTime.set(Calendar.HOUR_OF_DAY, 0)
        startTime.set(Calendar.MINUTE, 0)
        startTime.set(Calendar.SECOND, 0)
        startTime.add(Calendar.YEAR, -2)

        val endTime = Calendar.getInstance()
        endTime.add(Calendar.YEAR, 2)

        val selection =
            "(( " + CalendarContract.Events.DTSTART + " >= " + startTime.timeInMillis + " ) AND ( " + CalendarContract.Events.DTEND + " <= " + endTime.timeInMillis + " ) AND ( deleted != 1 )  AND (account_name = '" + selectedEmail + "'))"

        val cursor = contentResolver.query(
            CalendarContract.Events.CONTENT_URI,
            projectionArray,
            selection,
            null,
            null
        )

        if (cursor != null && cursor.count > 0 && cursor.moveToFirst()) {
            do {
                var calendarString = ""

                val calendarId = "Id: " + cursor.getInt(0)
                val title = "Title: " + cursor.getString(1)
                val description = "Description: " + cursor.getString(2)
                val startDate = "Start Date: " + cursor.getString(3)
                val endDate = "End Date: " + cursor.getString(4)
                val allDay = "All Day: " + cursor.getString(5)
                val location = "Location: " + cursor.getString(6)
                val organizer = "Organizer: " + cursor.getString(7)
                val timeZone = "Timezone: " + cursor.getString(8)
                val accountType = "Account Type: " + cursor.getString(9)
                val accountName = "Account Name: " + cursor.getString(10)

                calendarString =
                    calendarId + "\n" + title + "\n" + description + "\n" + startDate + "\n" + endDate + "\n" + allDay + "\n" + location + "\n" + organizer + "\n" + timeZone + "\n" + accountType + "\n" + accountName

                result = if (result.isEmpty()) {
                    calendarString
                } else {
                    result + "\n\n\n" + calendarString
                }
                count++
            } while (cursor.moveToNext())
        }
//        txtResults.text = result
        Log.e("DCal", "" + count)
        getEventsReminders(selectedEmail)

    }

Это работает абсолютно нормально и идеально. В то время как я пытаюсь получить Напоминания с устройства со следующим кодом,

 @SuppressLint("MissingPermission")
    private fun getAccountCalendarReminders(selectedEmail: String) {
        var count = 0
        val projectionArray =
            arrayOf(
                CalendarContract.Reminders.EVENT_ID,
                CalendarContract.Reminders.METHOD,
                CalendarContract.Reminders.MINUTES
            )

        val startTime = Calendar.getInstance()
        startTime.add(Calendar.YEAR, -2)

        val endTime = Calendar.getInstance()
        endTime.add(Calendar.YEAR, 2)

//        val selection =
//            "((account_name = '$selectedEmail'))"


        val cursor = contentResolver.query(
            CalendarContract.Reminders.CONTENT_URI,
            projectionArray,
            null,
            null,
            null
        )


        if (cursor != null && cursor.count > 0 && cursor.moveToFirst()) {
            do {
                var calendarString = ""

                val calendarId = "Id: " + cursor.getInt(0)
                val title = "Method: " + cursor.getString(1)
                val description = "Minutes: " + cursor.getString(2)
//                val startDate = "Title: " + cursor.getString(3)
//                val endDate = "End Date: " + cursor.getString(4)
//                val allDay = "All Day: " + cursor.getString(5)
//                val location = "Location: " + cursor.getString(6)
//                val organizer = "Organizer: " + cursor.getString(7)
//                val timeZone = "Timezone: " + cursor.getString(8)
//                val accountType = "Account Type: " + cursor.getString(9)
//                val accountName = "Account Name: " + cursor.getString(10)
                calendarString =
                    calendarId + "\n" + title + "\n" + description


                result = if (result.isEmpty()) {
                    calendarString
                } else {
                    result + "\n\n\n" + calendarString
                }
                count++
            } while (cursor.moveToNext())
        }

        Log.e("DRem", "" + count)
        txtResults.text = result

    }

И вывод этого Напоминания просто,

enter image description here

Может ли кто-нибудь помочь мне в получении информации о напоминаниях полностью, как, 1. Имя напоминания, 2. Дата начала, 3. Местоположение и т. Д. c. те же поля, что и у Событий.

Примечание: Я также прошел через эту библиотеку,

https://github.com/EverythingMe/easy-content-providers

Эта библиотека делает то же самое. Он не перечисляет напоминания из календаря устройства.

Фрагмент кода из приведенного выше Lib:

val provider = CalendarProvider(this)
val events = provider.getEvents(id.toLong()).list as ArrayList<Event>
val reminders = provider.getReminders(id.toLong()).list as ArrayList<Event>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...