2010-11-02 22 views
5

J'écris une application de réseautage social qui a des fonctionnalités de synchronisation des contacts. J'ai le code de travail (d'un exemple j'ai trouvé here) qui insère des contacts sur v2.x dans un adaptateur de synchronisation.Android 1.x Contacts.Extensions pour un type de compte personnalisé?

Cependant, le logiciel Motorola Blur ne reconnaît pas les contacts 2.x (j'utilise une version 2.2 Moto sur un Droid X). Blur utilise l'API contacts 1.x, mais j'ai du mal à trouver/comprendre des exemples d'utilisation. This page montre comment faire une requête par nom, mais je veux a) ajouter et b) requête par un compte personnalisé (ou potentiellement MIME) type.

Le code v2 que j'utilise crée un nouveau contact brut, crée un enregistrement de données "StructuredName", puis un enregistrement de données de type MIME personnalisé. Comment faire l'équivalent sur l'API 1.x (niveau 3)? Je pense que c'est ce que la classe Contacts.Extensions est pour, mais la documentation n'est pas claire au mieux.

Répondre

1

Les modifications Motorola BLUR apportées aux contacts ont plus à voir avec la façon dont les comptes sont gérés sur le périphérique et moins avec les modifications apportées au fournisseur de contenu. Le vrai problème lorsque vous travaillez avec un périphérique Motorola BLUR est que vous devez définir le ACCOUNT_NAME et ACCOUNT_TYPE à une valeur qui joue bien avec le périphérique. Motorola n'est pas le seul appareil pour lequel cela pose un problème car dans mon travail, j'ai trouvé d'autres appareils dont les applications de contacts ne sont pas sympas avec les enregistrements ajoutés aux comptes personnalisés sur l'appareil. Au cours de l'installation, vous devrez déterminer le type de périphérique sur lequel vous exécutez, puis déterminer le compte que vous utiliserez pour stocker vos contacts. J'ai trouvé des exceptions pour les appareils Samsung Galaxy, HTC Sense et les appareils MOTOBLUR pour lesquels l'utilisation d'un compte de contact personnalisé ne vous permet pas de travailler avec vos contacts dans l'application de contact (par exemple, vous pouvez les ajouter, mais impossible d'insérer de nouveaux enregistrements sur votre compte).

Je ne peux pas partager de code parce qu'il appartient à mon travail, mais je peux vous dire que si vous utilisez le compte suivant pour vos contacts sur les appareils MOTOBLUR cela fonctionnera. Les appareils Motorola sur Verizon ont un compte d'assistant de sauvegarde qui fonctionne très bien et d'autre part, j'utilise le compte BLUR par défaut qui semble bien fonctionner.

Rechercher un compte sur l'appareil avec le type com.motorola.android.buacontactadapter et un nom de "Téléphone" et l'utiliser. Si ce n'est pas le cas, cherchez un compte du type com.motorola.blur.service.bsutils.MOTHER_USER_CREDS_TYPE et utilisez-le (quel que soit son nom) et vous serez tous sur les appareils Motorola.

Si vous partagez une partie de votre code ou un lien vers l'exemple que vous avez référencé, je serais ravi de plonger plus profondément.

+0

L'exemple que j'ai utilisé était celui-ci: http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-2/ J'ai (heureusement) trouvé que sur BLUR> 2.2 (gingerbread +) l'application de contact de flou sera heureusement trouver et travailler avec mes contacts API v2.x. Les versions précédentes sont toujours malheureuses. –

+0

Motorola a appris l'erreur de leur façon, les versions récentes de BLUR (post stable4) fonctionneront pour vous.Malheureusement, ils ne mettent pas à jour les appareils plus anciens, donc seul le temps guérira vos maux. –

+0

Il semble que le temps ait guéri ce mal. Presque aucun de mes utilisateurs n'est sur <2.2 plus. Je vais accepter cette réponse même si je n'ai pas essayé cette approche. Merci pour l'effort que vous y avez mis. –

1

Pour faire face à la fin de vos questions:

Cette infrastructure est uniquement prise en charge pour la structure des contacts 2.x, c'est quand ils l'ont introduit.

OEM Les applications Contacts sur les périphériques 1.X peuvent fonctionner de manière similaire ou non.