Calendrier Android: comment écrire l'adaptateur de synchronisation pour le calendrier INSERT

J'aimerais essentiellement rouvrir la publication suivante sans réponse:

J'aimerais utiliser l'API du fournisseur de calendrier Android pour créer un calendrier et y insérer des événements. Le calendrier créé ne doit pas être une copie locale. Il doit être synchronisé avec le calendrier Google (en ligne). La documentation indique que, pour ce faire, je dois utiliser un adaptateur de synchronisation. Mais comment puis-je écrire un tel adaptateur de synchronisation?

  • Utilisation de PreferenceActivity and ActionBarActivity
  • La réalisation d'une analyse UPNP ne renvoie pas le pont Philips Hue
  • Support Unicode pour Android
  • Aucune ressource trouvée ne correspond à la prénom
  • Stockage des dimensions dans le fichier xml dans Android
  • Style de boîte de dialogue personnalisé dans la boîte de dialogue
  • Jusqu'à présent, j'ai trouvé les deux messages suivants mais pas de solution.

    • Créer un nouveau calendrier synchronisé avec Android Api
    • Comment puis-je ajouter un nouveau calendrier téléphonique à Android?

    Je souhaite utiliser l'API Calendrier Android pour cela et non l'API Google afin que les utilisateurs puissent fonctionner hors ligne.

  • Android Fragment aucune vue n'a été trouvée pour ID?
  • Comment changer la couleur des overscroll edge et overscroll lueur
  • Listener for Call end dans Android
  • Questions de sécurité et de conception de facturation dans l'application
  • Empêcher l'ouverture de l'activité pour plusieurs fois
  • ADT n'autorise pas la création de l'activité Android
  • 2 Solutions collect form web for “Calendrier Android: comment écrire l'adaptateur de synchronisation pour le calendrier INSERT”

    Il semble que Google ait gâché CalendarContract à cet égard. La documentation n'est pas complètement claire à ce sujet:

    … l'insertion de nouveaux calendriers devrait être effectuée comme un adaptateur de synchronisation.

    La façon dont cela est rédigé me paraît comme s'il y avait une mince chance de fonctionner. Mais pratiquement parlant (juger vos autres questions SO liées), une application utilisant CalendarContract ne peut pas créer des calendriers synchronisés.

    Vous ne voulez vraiment pas passer par tous les problèmes de création de votre propre SyncAdapter. Je l'ai fait une fois pour l'une de mes applications parce que je voulais une solution fiable pour avoir un accès synchronisé au calendrier sur les appareils Ice Cream Sandwich (où CalendarContract n'existe pas encore).

    C'est beaucoup de travail. Il implique une interface avec l'API Google Calendar Web Service (tout en respectant leurs limitations d'accès), en conservant une copie locale des données et en synchronisant uniquement les différences. En fin de compte, votre propre SyncAdapter double également les données du Google Calendar SyncAdapter déjà existant.

    Ce que vous pourriez faire en tant que solution de contournement, c'est simplement la mise en œuvre de la fonction "créer un calendrier" directement sur l' API en ligne Google Calendar . Cela exige que votre application demande à l'utilisateur une autorisation via android.permission.USE_CREDENTIALS .

    AccountManager peut être utilisé pour obtenir le jeton d'autorisation correct pour accéder à l'API Google Calendar. La méthode getAuthToken nécessite un paramètre de type jeton auth. Le bon pour l'accès en lecture / écriture du calendrier est le suivant: "Manage your calendars" .

    Il y a cependant deux grands problèmes avec cette solution:

    1. Vous ne savez pas si le calendrier de synchronisation du calendrier utilise Google Calendar. C'est malheureusement une boîte noire.

    2. Vous ne pouvez pas savoir avec certitude lorsque l'adaptateur de synchronisation du calendrier va rattraper ces changements. Je suppose qu'il est possible de forcer de nouveau une nouvelle synchronisation. Mais même alors, votre application sera bloquée. Vous ne pouvez pas simplement opérer en fonction de ce nouveau calendrier et l'utiliser tout de suite. Votre application doit attendre la synchronisation.

    Vous pouvez consulter CalendarContract pour cela. Laissez votre application attendre et cherchez des modifications dans un thread d'arrière-plan jusqu'à ce que le nouveau calendrier s'affiche. Ensuite, vous avez son identifiant local et avancez.

    Il n'est pas possible de créer un calendrier synchronisé avec le compte Google (Gmail) utilisant l'API Clanedar pour l'instant. SyncAdapter peut être utilisé pour créer un nouveau compte non-Gmail et créer de nouveaux calendriers, mais ceux-ci ne sont pas synchronisés avec Google Calendar.

    Plus de détails ici: https://stackoverflow.com/a/19734278/237232

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.