2011-01-05 54 views
3

讓我們蠻力你的花園裏,各式各樣的Android 2.x的可見聯繫ID /名稱光標(通過ContactsContract):如何使用電子郵件和/或電話號碼查詢Android 2.x聯繫人?

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

查詢在適當的內容提供商Uri。例如,android.provider.ContactsContract.CommonDataKinds.Email,可以獲取電子郵件地址,以及您的其他列(例如,IN_VISIBLE_GROUP)都隱含加入進來。

Here is a sample project演示使用這些內容提供商URI值。

+0

馬克通過!非常感謝。我會帶着Spinners去旋轉。不過,我應該澄清一下。我意識到我總是可以單獨走聯繫人,但我試圖一舉拿到過濾列表。 – 2011-01-06 03:35:16

+0

@Joe D'Andrea:「但我試圖一舉拿到過濾清單」......這就是我提供的樣本所展現的。當您查詢「CommonDataKinds.Email」等「次級」「表」時,您需要利用「ContactsContract」內容提供商提供的隱式聯接。 – CommonsWare 2011-01-06 12:40:06

+0

完美。這就是我所缺少的 - 隱式連接。 (現在試着讓Eclipse導入項目!) – 2011-01-06 14:05:05

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。不過,它可能是特定於星系標籤的。

相關問題