2011-12-27 147 views

回答

0
Cursor c = context.getContentResolver().query(ContactsContract.Data.CONTENT_URI 
, null, ContactsContract.Data.MIMETYPE+"=?" 
, new String[]{ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE} 
, null); 

然後通過光標循環並獲取您想要的數據。這將返回顯示contactID和groupID以及其他信息的數據塊。然後查詢ContactsContract.Groups並獲取有關要比較的組的數據。

如果您正在尋找關於組一行ID比你可以添加以下光標,像這樣一組第一查詢具體的數據......

Cursor c = context.getContentResolver().query(ContactsContract.Data.CONTENT_URI 
, null, ContactsContract.Data.MIMETYPE+"=? AND "+ ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID+"=?" 
, new String[]{ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE, rowID } 
, null); 

寫代碼這裏愚蠢的錯誤很抱歉

你可以找到組ID像這樣...

Cursor c = context.getContentResolver().query(ContactsContract.Groups.CONTENT_URI, new String[]{ContactsContract.Groups._ID}, ContactsContract.Groups.TITLE+"=?","myGroup", null); 
+1

感謝您的回答。我已經嘗試了上面的查詢,並且使用c.getString(c.getColumnIndex(Data.DISPLAY_NAME))成功獲得給定組的聯繫人名稱。但是,當我做同樣的手機號碼,使用c.getString(c.columnIndex(CommonDataKinds.Phone.NUMBER)),光標似乎返回組行ID,而不是電話號碼。這很奇怪... – 2011-12-27 23:29:21

+0

這是因爲電話號碼存儲在不同的數據塊/ mimetype下,並且您似乎正在嘗試在與組相同的mimetype下搜索它們。您需要執行單獨的查詢並搜索Phone.CONTENT_ITEM_TYPE mimetype,或者可以執行一個查詢並檢查mimetype是否適當。如果這看起來很混亂,那麼你應該真的閱讀這個頁面http://developer.android.com/resources/articles/contacts.html,因爲它是非常豐富的。 – Maurycy 2011-12-28 06:03:37