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.