我想根据Android中联系人的MIME类型获取联系人列表。
例如,我想要一个包含电子邮件地址的联系人列表。
您可以使用ContactsContract.RawContacts.Entity
目录来阅读与原始联系人相关联的所有数据。如果原始联系人具有数据行,则实体游标将包含每个数据行的一行。如果原始联系人没有数据行,则游标仍将包含一个包含原始联系人级别信息的行。
Uri rawContactUri =
ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId);
Uri entityUri =
Uri.withAppendedPath(rawContactUri, Entity.CONTENT_DIRECTORY);
Cursor c =
getContentResolver().query(
entityUri,
new String[] {
RawContacts.SOURCE_ID, Entity.DATA_ID, Entity.MIMETYPE, Entity.DATA1 },
null, null, null);
try {
while (c.moveToNext()) {
String sourceId = c.getString(0);
if (!c.isNull(1)) {
String mimeType = c.getString(2);
String data = c.getString(3);
//decide here based on mimeType, see comment later
}
}
} finally {
c.close();
}
String email = c.getString(c.getColumnIndex(Email.ADDRESS));
当然,您可以为 ContentResolver.query()
提供条件,仅检索感兴趣的记录,使用 DataColumns
中的 MIMETYPE 和其他常量。