1
我正在開發Android聯繫人。我想查詢來自特定組名稱的電話號碼(不是聯繫人姓名)。我應該執行什麼查詢才能執行此操作?如何獲取特定羣組的電話號碼
我正在開發Android聯繫人。我想查詢來自特定組名稱的電話號碼(不是聯繫人姓名)。我應該執行什麼查詢才能執行此操作?如何獲取特定羣組的電話號碼
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);
感謝您的回答。我已經嘗試了上面的查詢,並且使用c.getString(c.getColumnIndex(Data.DISPLAY_NAME))成功獲得給定組的聯繫人名稱。但是,當我做同樣的手機號碼,使用c.getString(c.columnIndex(CommonDataKinds.Phone.NUMBER)),光標似乎返回組行ID,而不是電話號碼。這很奇怪... – 2011-12-27 23:29:21
這是因爲電話號碼存儲在不同的數據塊/ mimetype下,並且您似乎正在嘗試在與組相同的mimetype下搜索它們。您需要執行單獨的查詢並搜索Phone.CONTENT_ITEM_TYPE mimetype,或者可以執行一個查詢並檢查mimetype是否適當。如果這看起來很混亂,那麼你應該真的閱讀這個頁面http://developer.android.com/resources/articles/contacts.html,因爲它是非常豐富的。 – Maurycy 2011-12-28 06:03:37