1
연락처를 그룹에 삽입해야합니다. 나는 이드의 그룹이있다.그룹의 ID로 특정 그룹의 연락처 추가
연락처는 내부 계정에 삽입되지만 그룹 지정에는 없습니다. 나는 이유를 모른다. 누구든지 나를 도울 수 있습니까?
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
Account[] accounts = AccountManager.get(getActivity()).getAccounts();
String accountName = null;
String accountType = null;
String account = "[email protected]";
for(Account account2 : accounts)
if(account2.name.equals(account)){
accountName = account2.name;
accountType = account2.type;
}
ops.add(ContentProviderOperation
.newInsert(ContactsContract.RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, accountType)
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, accountName)
.build());
ops.add(ContentProviderOperation
.newAssertQuery(ContactsContract.Groups.CONTENT_URI)
.withSelection(ContactsContract.Groups._ID + " = ?", new String[]{Long.toString(idGroup)}) //new String[]{Long.toString(idGroup)}
.withExpectedCount(1)
.build());
ops.add(ContentProviderOperation
.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, "RICARDITO bla bla2")
.build());
try{
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
}catch(Exception e){
Log.e(ClientEditContact.class.getName(), e.toString());
}
contact_id 및 group_row_id로 쿼리 한 다음 'MIMETYPE'을 설정 한 것으로 보입니다. 이게 진짜로 효과가 있니? – Deqing
Thanks @Deqing! 이전에 잘못된 코드를 추가했는데 방금 업데이트했습니다. –