3

让我们暴力​​破解您的普通 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。(告诉我这不会变得丑陋。)

4

2 回答 2

4

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

这是一个示例项目,它演示了如何使用这些其他内容提供程序 Uri 值。

于 2011-01-06T01:20:52.817 回答
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. 不过,它可能特定于银河选项卡。

于 2012-03-06T14:11:49.013 回答