После добавления события в календарь, созданный пользователем в Android, название события не отображается - PullRequest
2 голосов
/ 26 октября 2010

Я разрабатываю приложение для Android, которое создает календарь на телефоне при первой установке приложения. Когда я создаю событие, программно или с помощью самого устройства, оно появляется в календаре, но его заголовок отсутствует. Я тестирую свой код на HTC Nexus One.

Поскольку я получаю то же поведение при создании события через мой код или через устройство, я подозреваю, что в коде, который я написал, возникла проблема с созданием новой учетной записи в календаре. Я делаю это, добавляя новое поле в таблицу calendars базы данных calendar.db , URI которой: "content: //com.android.calendar/calendars"

 private Uri addNewCalendar() {

   if (!calendarExists()) {

       ContentResolver contentResolver = mContext.getContentResolver();

       ContentValues cv = new ContentValues();
       cv.put(Calendar.Calendars._SYNC_ACCOUNT, mAccount.name);
       cv.put(Calendar.Calendars._SYNC_ACCOUNT_TYPE, mAccount.type);
       cv.put(Calendar.Calendars._SYNC_TIME, new Date().getTime());
       cv.put(Calendar.Calendars.URL, "http://www.example.com");
       cv.put(Calendar.Calendars.NAME, mAccount.name);
       cv.put(Calendar.Calendars.DISPLAY_NAME, mAccount.name);
       cv.put(Calendar.Calendars.HIDDEN, 0);
       cv.put(Calendar.Calendars.COLOR, 14417920);
       cv.put(Calendar.Calendars.ACCESS_LEVEL, 700);
       cv.put(Calendar.Calendars.SELECTED, 1);
       cv.put(Calendar.Calendars.SYNC_EVENTS, 1);
       cv.put(Calendar.Calendars.TIMEZONE, "GMT");
       cv.put(Calendar.Calendars.OWNER_ACCOUNT, mAccount.name);

       Uri uri = contentResolver.insert(Calendar.Calendars.CONTENT_URI.buildUpon().build(), cv);

       return uri;
      }
      return null;
    }

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

У кого-нибудь есть идея, почему у меня такая проблема? Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 13 мая 2014

Пожалуйста, попробуйте этот код, надеюсь, ответьте на ваш вопрос:

  public int addEvent(String title, String location, String detail,
        long from, long to, int reminder, boolean update, int id) {
    ContentValues event = new ContentValues();
    Uri url = null;
    event.put("calendar_id", "1");
    // event.put("_id", id);
    event.put("title", title);
    event.put("description", detail);
    event.put("eventLocation", location);

    // startTime = System.currentTimeMillis();
    /*
     * try { Thread.sleep(5000); } catch (InterruptedException e) {
     * e.printStackTrace(); }
     */
    // endTime = System.currentTimeMillis();
    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", reminder); // 0 for false, 1 for true

    String contentProvider;
    if (Build.VERSION.RELEASE.contains("2.2")
            || Build.VERSION.RELEASE.contains("2.3"))
        contentProvider = "com.android.calendar";
    else
        contentProvider = "calendar";

    Uri remindersUri = Uri.parse(String.format("content://%s/reminders",
            contentProvider));
    Uri eventsUri = Uri.parse(String.format("content://%s/events",
            contentProvider));
    Uri calendars = Uri.parse(String.format("content://%s/calendars",
            contentProvider));
    if (update)
        getContentResolver().update(eventsUri, event, "event_id=?",
                new String[] {})/* ate(eventsUri, event) */;
    // retCode = db.update(SQLiteDBHandler.EVENT_TABLE, values, "_id=?", new
    // String[]{id+""});
    else
        url = getContentResolver().insert(eventsUri, event);
    String eventid = url.getPathSegments().get(
            url.getPathSegments().size() - 1);
    if (reminder == 1) {
        event = new ContentValues();
        event.put("event_id", eventid);
        event.put("minutes", reminder_time);
        event.put("method", 1);
        getContentResolver().insert(remindersUri, event);
        /*
         * try{ Cursor curs = getContentResolver().query(remindersUri, null,
         * null, null, null); curs.getColumnName(3); }catch (Exception e) {
         * // TODO: handle exception e.printStackTrace(); }
         */
    }
    return Integer.parseInt(eventid);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...