查找从地址簿中选择的城市,国家,邮政编码

时间:2014-03-01 12:14:28

标签: android android-contacts addressbook contactscontract

我已经看到很多线索可以访问address book的联系人,但除了namenumber之外,我想访问其他详细信息,例如此人的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();
                    }
                }

1 个答案:

答案 0 :(得分:0)

如果联系人没有任何地址值,那么除了null之外你什么也得不到。快速查看它,您的代码似乎很好。使用已设置地址的联系人进行测试。您不能指望手机只是随机提出用户的地址,对吗?

在应用程序中使用此功能的一个问题是,除了姓名,电话号码或电子邮件之外,许多用户不会填写任何内容。在尝试使用该值之前,最好检查地址是否为空。