如何使用电子邮件和/或电话号码查询Android 2.x联系人?

时间:2011-01-05 22:44:56

标签: android email cursor phone-number contactscontract

让我们强行推出您的花园式Android 2.x可见联系人ID /姓名游标(通过 ContactsContract ):

Cursor c = getContentResolver().query(
  Contacts.CONTENT_URI,
  new String[] { Contacts._ID, Contacts.DISPLAY_NAME },
  Contacts.IN_VISIBLE_GROUP + " = '1'",
  null,
  Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC"
);

有没有办法过滤这个以获得只有至少一个电子邮件和/或电话号码的联系人?

我发现我可以使用 Contacts.HAS_PHONE_NUMBER ...但我在任何地方都看不到 HAS_EMAIL 。 (告诉我这不会变得难看。)

2 个答案:

答案 0 :(得分:4)

查询相应的内容提供商Uri。例如,android.provider.ContactsContract.CommonDataKinds.Email可让您获取电子邮件地址,并隐式加入您的其他列(例如IN_VISIBLE_GROUP)。

Here is a sample project演示了使用这些其他内容提供商的Uri值。

答案 1 :(得分:0)

我只是枚举了在“联系人”上提取的游标上的列:

Cursor c = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
String[] names = c.getColumnNames();
for (String string : names) {
    Log.d("ContactList", "RC column " + string);
}
c.close();

结果包含has_email。但它可能是特定于星系标签的。