CalendarProvider, как узнать имя владельца встречи? - PullRequest
0 голосов
/ 04 июня 2019

Мне нужно получить имя владельца собрания из CalendarProvider.Я нашел эти две строки:

CalendarContract.Events.ORGANIZER,
CalendarContract.Events.OWNER_ACCOUNT 

Но они возвращают только электронную почту создателя.

Как я могу получить имя создателя?

1 Ответ

0 голосов
/ 04 июня 2019

Попробуйте приведенный ниже код для получения информации о событиях. Для более подробной информации вы можете проверить Google Calendar Docs календарь https://developer.android.com/guide/topics/providers/calendar-provider

  // add below permission in your app manifest file and also ask these two permission at run time
   <uses-permission android:name="android.permission.WRITE_CALENDAR"/>
   <uses-permission android:name="android.permission.READ_CALENDAR"/>

   // add below method in your activity
   public void getOrganizerName() {
    Cursor cur = null;
    ContentResolver cr =getContentResolver();
    Uri uri=CalendarContract.Events.CONTENT_URI;
    String[] eventmProjection =
            {CalendarContract.Calendars._ID,
                    CalendarContract.Events.DTSTART,
                    CalendarContract.Events.DTEND,
                    CalendarContract.Events.TITLE,
                    CalendarContract.Events.EVENT_LOCATION,
                    CalendarContract.Events.ORGANIZER,
                    CalendarContract.Events._ID,
                    CalendarContract.Events.DESCRIPTION,
                    CalendarContract.Events.DURATION,
                    CalendarContract.Events.SYNC_DATA1,
                    CalendarContract.Events.DIRTY,
                    CalendarContract.Events.UID_2445,
                    CalendarContract.Events.DELETED,
                    CalendarContract.Events.LAST_DATE,
                    CalendarContract.Events.SYNC_DATA2,
                    CalendarContract.Events.ALL_DAY,
                    CalendarContract.Events.RRULE,
                    CalendarContract.Events.STATUS,
                    CalendarContract.Events.RDATE
            };

    String selection = "(" + CalendarContract.Calendars.ACCOUNT_NAME + " = ? AND deleted != 1 AND " + CalendarContract.Events.ORGANIZER + " != ?)";
  // pass here google calendar sync account detials
    String[] selectionArgs = new String[]{"abc@gmail.com","abc@gmail.com"};

    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CALENDAR) != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_CALENDAR},12);
    }
    cur = cr.query(uri, eventmProjection, selection, selectionArgs, null);
    if(cur.getCount()>0){
        while (cur.moveToNext()) {
            String eventTitle = cur.getString(cur.getColumnIndex(CalendarContract.Events.TITLE));
            String eventId = cur.getString(cur.getColumnIndex(CalendarContract.Events._ID));
            String startDate = cur.getString(cur.getColumnIndex(CalendarContract.Events.DTSTART));
            String endDate = cur.getString(cur.getColumnIndex(CalendarContract.Events.DTEND));
            String org_name=cur.getString(cur.getColumnIndex(CalendarContract.Events.ORGANIZER));
            Log.d("Events", "->" + eventTitle + "->" + eventId + "->" + startDate + "->" + endDate+ "->"+org_name);
        }
    }
}
...