2010-05-28 16 views
2

J'essaie d'ajouter un nouveau contact à ma liste de contacts en utilisant la nouvelle API ContactContract via mon application. J'ai la méthode suivante basée sur l'exemple de gestionnaire de contacts sur android dev.Problème lors de l'ajout Contact avec la nouvelle API

private static void addContactCore(Context context, String accountType, String accountName, String name, String phoneNumber, int phoneType) throws RemoteException, OperationApplicationException { 

    ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 

    //Add contact type 
    ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI) 
      .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, accountType) 
      .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, accountName) 
      .build()); 

    //Add contact name 
    ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
      .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 
      .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) 
      .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, (!name.toLowerCase().equals("unavailable") && !name.equals("")) ? name : phoneNumber) 
      .build()); 

    //Add phone number 
    ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
      .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 
      .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) 
      .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, phoneNumber) 
      .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, phoneType) 
      .build()); 

    //Add contact 
    context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
} 

Dans un exemple, j'ai les valeurs qui s'écoulent pour les paramètres. accountType: com.google accountName: nom (mon e-mail de votre compte google) : Mike phoneNumber: 5555555555 PHONETYPE: 3

L'appel à la fonction retourne normalement sans aucune exception levée mais le contact est nulle part où être trouvé dans le gestionnaire de contacts sur mon téléphone. Il n'y a pas non plus de contact avec cette information sur mon téléphone. Est-ce que quelqu'un a un aperçu de ce que je pourrais faire de mal?

Répondre

1

Vous devez modifier les options d'affichage pour afficher les contacts associés au compte concerné.

+0

Cela a fonctionné pour moi. Plus précisément, allez dans Contacts -> Options d'affichage -> [compte] et cochez "Tous les autres contacts" – MobileDev852

0

Vous devez probablement également l'ajouter au groupe "Groupe système: Mes contacts".