package com.example.testcontact;
import android.content.ContentProviderOperation;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.OperationApplicationException;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.RemoteException;
import android.provider.ContactsContract;
import android.provider.ContactsContract.Groups;
import android.util.Log;
import android.view.Menu;
import java.util.ArrayList;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// create group
// ContentValues value = new ContentValues();
// value.put(Groups.TITLE, "TestGroup");
// getContentResolver().insert(Groups.CONTENT_URI, value);
// get group info(name and id)
getAllGroupInfo();
// Add contact
Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
ContentResolver resolver = getContentResolver();
ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>();
ContentProviderOperation op1 = ContentProviderOperation.newInsert(uri)
.withValue("account_name", null).build();
operations.add(op1);
uri = Uri.parse("content://com.android.contacts/data");
ContentProviderOperation op2 = ContentProviderOperation.newInsert(uri)
.withValueBackReference("raw_contact_id", 0)
.withValue("mimetype", "vnd.android.cursor.item/name").withValue("data2", "张三")
.build();
operations.add(op2);
ContentProviderOperation op3 = ContentProviderOperation.newInsert(uri)
.withValueBackReference("raw_contact_id", 0)
.withValue("mimetype", "vnd.android.cursor.item/phone_v2")
.withValue("data1", "13539777967").withValue("data2", "2").build();
operations.add(op3);
ContentProviderOperation op4 = ContentProviderOperation.newInsert(uri)
.withValueBackReference("raw_contact_id", 0)
.withValue("mimetype", "vnd.android.cursor.item/email_v2")
.withValue("data1", "asdfasfad@163.com").withValue("data2", "2").build();
operations.add(op4);
ContentProviderOperation op5 = ContentProviderOperation.newInsert(uri)
.withValueBackReference(ContactsContract.CommonDataKinds.GroupMembership.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID, 2)
.withValue(ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE,
ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE).build();
operations.add(op5);
try {
resolver.applyBatch("com.android.contacts", operations);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (OperationApplicationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//
// ContentValues values = new ContentValues();
// values.put(ContactsContract.CommonDataKinds.GroupMembership.RAW_CONTACT_ID, 0); // contact id
// values.put(ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID, 3); // group id
// values.put(ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE,
// ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE);
// getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
}
public void getAllGroupInfo() {
Cursor cursor = null;
try {
cursor = getContentResolver().query(Groups.CONTENT_URI, null, null, null, null);
while (cursor.moveToNext()) {
int groupId = cursor.getInt(cursor.getColumnIndex(Groups._ID));
String groupName = cursor.getString(cursor.getColumnIndex(Groups.TITLE));
Log.i("test", "group id:" + groupId + ">>groupName:" + groupName);
}
} finally {
if (cursor != null) {
cursor.close();
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}