2017-10-18 15 views
1

Comment puis-je contacter des adresses?Xamarin android obtenir des contacts avec des adresses

var uri = ContactsContract.Contacts.ContentUri; 

     string[] projection = { 
      ContactsContract.CommonDataKinds.StructuredPostal.InterfaceConsts.Id, 
      ContactsContract.CommonDataKinds.StructuredPostal.InterfaceConsts.DisplayName, 
      ContactsContract.CommonDataKinds.StructuredPostal.FormattedAddress 
     }; 


     var cursor = Application.Context.ContentResolver.Query(uri, projection, null, null, null); 

     var contactList = new List<(string id, string name, string address)>(); 

     if (cursor.MoveToFirst()) 
     { 
      do 
      { 
       contactList.Add(
        (
         cursor.GetString(cursor.GetColumnIndex(projection[0])), 
         cursor.GetString(cursor.GetColumnIndex(projection[1])), 
         cursor.GetString(cursor.GetColumnIndex(projection[2])) 
        ) 
       ); 
      } while (cursor.MoveToNext()); 
     } 

lorsque je tente ce que je reçois exception en disant « data1 colonne non valide » Je veux juste la liste des contacts + son adresse

Répondre

0

L'alias FormattedAddress (ou data1) existe sur le fournisseur de:

  • content://com.android.contacts/data/phones

Il faut donc utiliser ContactsContract.CommonDataKinds.Phone.ContentUri:

var uri = ContactsContract.CommonDataKinds.Phone.ContentUri; 
string[] projection = { 
    ContactsContract.CommonDataKinds.StructuredPostal.InterfaceConsts.Id, 
    ContactsContract.CommonDataKinds.StructuredPostal.InterfaceConsts.DisplayName, 
    ContactsContract.CommonDataKinds.StructuredPostal.FormattedAddress 
}; 
var cursor = Application.Context.ContentResolver.Query(uri, projection, null, null, null); 
var contactList = new List<(string id, string name, string address)>(); 
while (cursor.MoveToNext()) 
{ 
    contactList.Add(
     (
      cursor.GetString(cursor.GetColumnIndex(projection[0])), 
      cursor.GetString(cursor.GetColumnIndex(projection[1])), 
      cursor.GetString(cursor.GetColumnIndex(projection[2])) 
     ) 
    ); 
} 
+0

aucune exception plus mais il me donne le numéro de téléphone au lieu de FormattedAddress, une idée? –

+0

Trouvé, car ContactsContract.CommonDataKinds.Phone.Number et ContactsContract.CommonDataKinds.StructuredPostal.FormattedAddress ont la valeur de data1 .... ne peuvent toujours pas obtenir de contacts avec des adresses. s'il vous plaît aide –