2017-01-05 1 views
2

Considérons le code ci-dessous. Par exemple, si displayName = "Squirrel, Rocky J." alors il apparaît dans les contacts comme "Rocky J. Squirrel". J'aimerais être inscrit tel quel, c'est-à-dire "Squirrel, Rocky J." Cependant, dans le docs, je ne vois pas cela comme une option.
Comment est-ce que je fais ceci?Ajouter un contact avec le nom de famille en premier

if (displayName != null) { 
    contentProviderOperationArrayList.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, 
        displayName) 
      .build()); 
} 

Edit:
Après avoir modifié les paramètres comme suggéré par Marmor ... si je "Léon Tolstoï" et "Langston Hughes" j'attendre à voir la liste de contact:

H
Hughes, Langston
T
Tolstoï, Leo

au lieu de cela, je vois (Samsung SM-T530)

L
Hughes, Langston
Tolstoï, Leo

(sur Pixel C)

H
Langston Hughes
T
Léon Tolstoï

donc non seulement l'affichage semble être dépendant du périphérique et prêtant à confusion, il semble qu'il ne puisse pas être contrôlé par programme.

Répondre

1

Lorsque vous ajoutez un contact (soit programatically ou via l'écran de contact modifier), le contenu fournisseur Contacts parse le nom inséré et tente de le diviser dans les champs de nom: prefix, first, middle, last, suffix , nickname.

Après quoi un nom peut être affiché sur l'application Contacts/People soit comme « First Last » ou « Last, First », en fonction des paramètres.

Si vous permettant de basculer l'option d'affichage du nom:

Dans l'application stock Contacts, cliquez sur le menu>settings>Name Format> sélectionnez Last name first.

MISE À JOUR

contacts système des applications peuvent être un peu différent entre les périphériques, mais la plupart d'affichage au moins deux options dans la page des paramètres ci-dessus: Sort by et Name format. À partir des exemples que vous avez donnés ci-dessus, je pense que vous voudriez changer les deux paramètres en Last Name.

En ce qui concerne le changement de ces valeurs programatically, cela pourrait être possible, en fonction des autorisations de votre application a, quelque chose comme ceci:

Settings.system.putInt(getContentResolver(),"android.contacts.SORT_ORDER", value); 

value est 1 ou 2. Lisez ceci pour comprendre les autorisations nécessaires: https://developer.android.com/reference/android/provider/Settings.System.html#canWrite(android.content.Context)