简体   繁体   中英

Xamarin android get contacts with addresses

How can I get contact with addresses?

  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());
        }

when i try this I get exception saying "Invalid column data1" I just want list of contact + his address

The alias FormattedAddress (or data1 ) exists on the provider of:

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

So use 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]))
        )
    );
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM