2010-08-26 8 views
3

J'ai une application qui ajoute un événement au calendrier sur l'appareil. Je les URL suivantes pour le calendrier ContentProvider:Calendrier URL ContentProvider sur les téléphones Android avec interface utilisateur

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

Ces urls fonctionnent bien pour le Nexus One, mais ne renvoie aucun calendrier sur HTC Desire/Incredible/Hero. Probablement tous les téléphones avec une interface utilisateur sensée. Cela arrive sur 2.1 et 2.2.

Est-ce que quelqu'un a rencontré ce problème avant et a des solutions de contournement?

+1

C'est l'un de ces « je te l'avais dit » moments. Étant donné que l'API de calendrier n'est pas documentée, il est préférable de la laisser seule. Accordé je veux aussi cette fonctionnalité et suis intéressé par les réponses que vous obtiendrez avec optimisme. – smith324

+0

Je sais, mais la bibliothèque gdata api est 13 Mb. A peine une bonne idée à inclure dans une application de quelques kb. – Rohit

+1

Ensuite, lancez votre propre bibliothèque. GData est juste Atom sur HTTP - vous n'avez pas besoin d'utiliser leur client JAR AFAIK. L'application Calendrier ne fait pas partie du SDK Android et ne devrait pas être utilisée directement par les développeurs, pour les raisons que vous découvrez. – CommonsWare

Répondre

3

utiliser ce code pour obtenir l'URI de votre plate-forme

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

J'ai pris une sortie différente et lancer la boîte de dialogue Modifier le calendrier. – Rohit

Questions connexes