让我们强行推出您的花园式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 。 (告诉我这不会变得难看。)
答案 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
。但它可能是特定于星系标签的。