[英]How to add contact in Android like skype, whatsapp in native contact app?
[英]how to add a contact to a group android
我有以下代碼將一個組的聯系人添加到android的聯系人應用程序/人員應用程序中,它確實添加了該組但不包括該組中的聯系人,我缺少什么? 我正在成功添加聯系人也創建組,我確實得到了兩個東西的ID,我使用以下代碼將聯系人與組關聯但它不起作用,組總是空的。
public Uri addToGroup(long personId, long groupId) {
ContentValues values = new ContentValues();
values.put(ContactsContract.CommonDataKinds.GroupMembership.RAW_CONTACT_ID,
personId);
values.put(
ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID,
groupId);
values
.put(
ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE,
ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE);
return this.getActivity().getContentResolver().insert(
ContactsContract.Data.CONTENT_URI, values);
}
****更新*****我發現的另一件事是我創建的這個組沒有與谷歌同步,這可能就是聯系人沒有被添加的原因。
最后可以添加聯系人到組,這是必需的,創建一個與谷歌帳戶同步的聯系人(必填),第二個創建一個可以同步到默認同步服務的組,然后添加聯系人我在上面的代碼中添加的方式。
如果您對如何創建可以同步的組感到好奇,請點擊此處
public String createGroup(String name) {
String[] GROUP_PROJECTION = new String[] { ContactsContract.Groups._ID, ContactsContract.Groups.TITLE };
try {
ContentValues groupValues = null;
ContentResolver cr = this.getContentResolver();
groupValues = new ContentValues();
groupValues.put(ContactsContract.Groups.TITLE, name);
groupValues.put(ContactsContract.Groups.SHOULD_SYNC,true);
cr.insert(ContactsContract.Groups.CONTENT_URI, groupValues);
}
catch(Exception e){
Log.d("########### Exception :",""+e.getMessage());
return "1";
}
String groupID = null;
Cursor getGroupID_Cursor = null;
getGroupID_Cursor = this.getContentResolver().query(ContactsContract.Groups.CONTENT_URI, GROUP_PROJECTION, ContactsContract.Groups.TITLE+ "=?", new String[]{name}, null);
getGroupID_Cursor.moveToFirst();
groupID = (getGroupID_Cursor.getString(getGroupID_Cursor.getColumnIndex("_id")));
return groupID;
}
使用ContentProviderOperation進行此操作。
ArrayList<ContentProviderOperation> operationList = new ArrayList<ContentProviderOperation>();
如果該組與groupId
,
operationList.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE,
ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID,
groupId).build());
如果組不存在:
// create group and insert
ContentValues groupValues;
ContentResolver cr = context.getContentResolver();
groupValues = new ContentValues();
groupValues.put(ContactsContract.Groups.TITLE, newGroupId);
try {
cr.insert(ContactsContract.Groups.CONTENT_URI, groupValues);
} catch (Exception e) {
// handle
}
operationList.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE,
ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID, newGroupId).build());
並且,應用更改:
ContentProviderResult[] cpr = context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, operationList);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.