Добавление календаря и событий в Android 2.2 - PullRequest
7 голосов
/ 01 июня 2011

Что я хочу: Я хочу добавить календарь событий в Android 2.2.

Что у меня есть: Я добавил событие, используя следующий код

    Uri calendars = Uri.parse("content://com.android.calendar/events");
    Cursor managedCursor = managedQuery(calendars, null, null, null, null);

    startManagingCursor(managedCursor);
    managedCursor.moveToFirst();

    String ID = null;

    do
    {
        ID = managedCursor.getString(managedCursor.getColumnIndexOrThrow("_id"));
    } 
    while (managedCursor.moveToNext());
    managedCursor.close();      

    int NewID = Integer.parseInt(ID) + 1;

    ContentValues event = new ContentValues();
    event.put("calendar_id", NewID);  // --- Some confusion Here with the ID,  
                                      // --- not sure how to use it here
    event.put("title", "New Event Title");
    event.put("description", "Event Desc");
    event.put("eventLocation", "Somewhere");

    long startTime = System.currentTimeMillis() + 1000 * 60 * 60;
    long endTime = System.currentTimeMillis() + 1000 * 60 * 60 * 2;

    event.put("dtstart", startTime);
    event.put("dtend", endTime);

    event.put("allDay", 0); // 0 for false, 1 for true
    event.put("eventStatus", 1);
    event.put("visibility", 0);
    event.put("transparency", 0);
    event.put("hasAlarm", 0); // 0 for false, 1 for true

    Uri eventsUri = Uri.parse("content://com.android.calendar/events");
    Uri insertedUri = getContentResolver().insert(eventsUri, event);

В чем проблема:
До сих пор я успешно добавлял одно событие в указанное время, и, по-видимому, роль NewID мне кажется подозрительной. Когда я пытаюсь добавить какое-то другое событие, я получаю возвращенный Uri вставленный Uri , и он показывает мне недавно добавленный идентификатор в конце URI. Но я не вижу такого события на устройстве. Может быть, в моем понимании календаря и событий есть какая-то проблема, или различия в обоих и их идентификаторах. Пожалуйста, наведите меня, что я пропускаю или делаю неправильно.

С уважением,
Хавар

1 Ответ

4 голосов
/ 03 июня 2011

Большая часть кода в порядке, вам просто нужно немного знать о календаре.На самом деле в Android существует более одного типа календаря.

Чтобы обойти все календари, используйте следующие Uri для 2.2:

Uri calendars = Uri.parse("content://com.android.calendar"+ "/calendars");

И получите значения 'id' и 'name', вы получите идею.

NewID's role is suspicious to me

Ваш код вставки в порядке, вам просто нужно указать идентификатор этого календаря, в который вы хотите вставить любое событие.

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

Работа с календарями Android

Доступ к событиям календарей без использования gdata api

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