我已经看到很多线索可以访问address book
的联系人,但除了name
和number
之外,我想访问其他详细信息,例如此人的city, state, country, postal code
。我试过这段代码,但其他的东西都是空的。
Cursor c = null;
try
{
Uri uri = data.getData();
c = getContentResolver().query(uri, new String[]
{
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.StructuredPostal.CITY,
ContactsContract.CommonDataKinds.StructuredPostal.STREET,
ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY },
null, null, null);
if (c != null && c.moveToFirst())
{
name = c.getString(0);
String number = c.getString(1);
city = c.getString(2);
street = c.getString(3);
country = c.getString(4);
Log.e("contactData...", name + ", " + street + ", " + number + ", " + city + ", " + country);
}
}
finally
{
if (c != null)
{
c.close();
}
}
答案 0 :(得分:0)
如果联系人没有任何地址值,那么除了null之外你什么也得不到。快速查看它,您的代码似乎很好。使用已设置地址的联系人进行测试。您不能指望手机只是随机提出用户的地址,对吗?
在应用程序中使用此功能的一个问题是,除了姓名,电话号码或电子邮件之外,许多用户不会填写任何内容。在尝试使用该值之前,最好检查地址是否为空。