2010-08-26 1 views
3

У меня есть приложение, которое добавляет событие в календарь на устройстве. У меня есть следующие ссылки для календаря ContentProvider:Calendar ContentProvider URL на телефонах Android с Sense UI

Pre Froyo: content://calendar/calendars 
Froyo: content://com.android.calendar/calendars 

Эти адреса работают отлично для Nexus One, но не возвращают никаких календарей на HTC Desire/Incredible/Hero. Вероятно, все телефоны с пользовательским интерфейсом Sense. Это происходит в 2.1 и 2.2.

Неужели кто-нибудь сталкивается с этой проблемой раньше и имеет какие-либо обходные пути?

+1

Это один из тех «я сказал вам, так что» моменты. Поскольку API-интерфейс календаря недокументирован, лучше всего оставить его в покое. Конечно, я тоже хочу эту функциональность, и я заинтересован в ответах, которые вы, надеюсь, получите. – smith324

+0

Я знаю, но библиотека gdata api составляет 13 Мб. Вряд ли хорошая идея включить в приложение несколько килобайт. – Rohit

+1

Затем сверните свою собственную библиотеку. GData - это просто Atom по HTTP - вам не нужно использовать свой клиент JAR AFAIK. Приложение «Календарь» не является частью Android SDK и не должно быть напрямую использовано разработчиками по причинам, которые вы открываете. – CommonsWare

ответ

3

использовать этот код, чтобы получить URI для вашей платформы

private String getCalendarUriBase() { 

      String calendarUriBase = null; 
      Uri calendars = Uri.parse("content://calendar/calendars"); 
      Cursor managedCursor = null; 
      try { 
       managedCursor = managedQuery(calendars, null, null, null, null); 
      } catch (Exception e) { 
      } 
      if (managedCursor != null) { 
       calendarUriBase = "content://calendar/"; 
      } else { 
       calendars = Uri.parse("content://com.android.calendar/calendars"); 
       try { 
        managedCursor = managedQuery(calendars, null, null, null, null); 
       } catch (Exception e) { 
       } 
       if (managedCursor != null) { 
        calendarUriBase = "content://com.android.calendar/"; 
       } 
      } 
      return calendarUriBase; 
     } 
+0

Я выбрал другой вариант и запустил диалог «Редактирование календаря». – Rohit