讀取原始聯繫人以及與其關聯的所有數據的最佳方式是使用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();
}
您必須篩選基於將mimeType
例如,因此,如果將mimeType是Phone.CONTENT_ITEM_TYPE
,則列DATA1
商店的電話號碼,但如果數據善良Email.CONTENT_ITEM_TYPE
,然後DATA1
存儲電子郵件地址。
這樣,您將不必使用HAS_PHONE_NUMBER
,因爲您將直接迭代通過項目。
嗯......如果我使用上面的URI has_phone_number字段是未知的...... – Bostjan 2010-06-23 10:03:31