package com.gemokodero.zk.utils; import java.util.ArrayList; import android.accounts.Account; import android.accounts.AccountManager; import android.content.ContentProviderOperation; import android.content.ContentProviderResult; import android.content.Context; import android.provider.ContactsContract; import com.gemokodero.zk.core.Result; public final class AddContact { private Account[] mAccounts; private AccountData mSelectedAccount; private Context mContext; private Result mResult; private int mPhoneType; private int mEmailType; public AddContact(Result result, AccountData data, Context context) { mPhoneType = ContactsContract.CommonDataKinds.Phone.TYPE_WORK; mEmailType = ContactsContract.CommonDataKinds.Email.TYPE_WORK; mAccounts = AccountManager.get(context).getAccounts(); mSelectedAccount = data; mContext = context; mResult = result; } public boolean createContactEntry() { String name = mResult.getName(); String phone = mResult.getPhoneNumber(); String website = mResult.getWebsite(); ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI) .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, mSelectedAccount.getType()) .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, mSelectedAccount.getName()) .build()); ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name) .build()); ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, phone) .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, mPhoneType) .build()); ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Website.CONTENT_ITEM_TYPE) .withValue(ContactsContract.CommonDataKinds.Website.DATA, website) .withValue(ContactsContract.CommonDataKinds.Website.TYPE, mEmailType) .build()); ContentProviderResult[] result = null; try { result = mContext.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); } catch (Exception e) { e.printStackTrace(); } boolean success = false; if(result!=null) { success = true; } return success; } }