Android中對Group的各種操作範例程式碼

來源:互聯網
上載者:User

1.  增加Group

// create a groupContentValues values = new ContentValues();values.put(ContactsContract.Groups.TITLE, “GROUPNAME”);Uri uri = getContentResolver().insert(ContactsContract.Groups.CONTENT_URI, values);

其中GROUPNAME是要建立的Group的名稱。

2. 刪除一個Group

// delete a group// 做刪除標誌,但未真正刪除。真正的刪除會在同步時自動實現// getContentResolver().delete(ContactsContract.Groups.CONTENT_URI, ContactsContract.Groups._ID + " = " + raw_group_id, null);// 真正意義上的刪除Uri uri = ContentUris.withAppendedId(ContactsContract.Groups.CONTENT_URI, raw_group_id);Uri.Builder b = uri.buildUpon();b.appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true");uri = b.build();getContentResolver().delete(uri, null, null);

其中raw_group_id是Group的ID,對應的是ContactsContract.Groups中的_ID欄位。

3. 查詢所有的Group

// query all groupsCursor groupCursor = getContentResolver().query(ContactsContract.Groups.CONTENT_URI, new String[]{ContactsContract.Groups.TITLE, ContactsContract.Groups._ID}, null, null, null);

查詢出所有Group的名稱和ID。

4. 更改指定Group的名稱

// update a groupContentValues values = new ContentValues();values.put(ContactsContract.Groups.TITLE, "NEWGROUPTITLE");getContentResolver().update(ContactsContract.Groups.CONTENT_URI, values, ContactsContract.Groups._ID + " = " + raw_group_id, null);

其中NEWGROUPTITLE是新取的Group名稱,raw_group_id是Group的ID。

5. 查詢一個Group中的所有連絡人

// To query all contacts in a group// First, query the raw_contact_ids of all the contacts in the groupCursor groupContactCursor = getContentResolver().query(Data.CONTENT_URI, new String[]{Data.RAW_CONTACT_ID}, Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE + "' AND " + ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID + " = " + raw_group_id, null, null);// Second, query the corresponding name of the raw_contact_idwhile(groupContactCursor.moveToNext()){Cursor contactCursor = getContentResolver().query(Data.CONTENT_URI, new String[]{Data.RAW_CONTACT_ID, StructuredName.FAMILY_NAME, StructuredName.GIVEN_NAME}, Data.MIMETYPE + "='" + StructuredName.CONTENT_ITEM_TYPE + "' AND " + Data.RAW_CONTACT_ID + "=" + groupContactCursor.getInt(0), null, null);contactCursor.moveToNext();Log.e("TestContractGroupOperationActivity", "Member name is: " + contactCursor.getString(1) + " " + contactCursor.getString(2));contactCursor.close();}groupContactCursor.close();

6. 從Group中刪除某個連絡人

// Delete a contact from a groupUri uri = Data.CONTENT_URI;Uri.Builder b = uri.buildUpon();b.appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true");uri = b.build();getContentResolver().delete(uri, Data.RAW_CONTACT_ID + "=" + raw_contact_id + " AND " + ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID + " =" + raw_group_id, null);

從ID為raw_group_id的Group中,刪除ID為raw_contact_id的Contact。

7. 查詢某個連絡人處於那幾個Group中

// First, query all the group ids that a contact is inCursor groupCursor = getContentResolver().query(Data.CONTENT_URI, new String[]{ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID}, ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE + "='" + ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE +"' AND " + Data.RAW_CONTACT_ID + " = " + raw_contact_id, null, null);// Second, get all the corresponding group nameswhile(groupCursor.moveToNext()){Cursor groupNameCursor = getContentResolver().query(ContactsContract.Groups.CONTENT_URI, new String[]{ContactsContract.Groups.TITLE}, ContactsContract.Groups._ID + "=" + groupCursor.getInt(0), null, null);groupNameCursor.moveToNext();Log.e("Test", groupNameCursor.getString(0));groupNameCursor.close();}groupCursor.close();

其中raw_contact_id是連絡人的ID。

需要注意的是,groupCursor中所包含的group_raw_id有可能重複,為了消除這種重複,可以將groupCursor中的內容倒入到一個Set容器中,再根據Set容器中的元素(具有唯一性的group_raw_id),尋找其對應的Group的名稱。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.