就做了个查询、添加联系人的例子,其他系统ContentProvider应该也差不多。
//查询联系人
public void query()
{
//获得ContentResolver实例
ContentResolver cr = this.getContentResolver();
//定义URI
Uri uri = ContactsContract.Contacts.CONTENT_URI;
//定义查询数组
// String[] projection = {ContactsContract.Contacts.DISPLAY_NAME,ContactsContract.Contacts._COUNT};
//定义查询条件
// String selection = ContactsContract.Contacts.DISPLAY_NAME +"=?";
//定义查询条件参数
// String[] selectionArgs = {"aaa"};
//排序列
String sortOrder = ContactsContract.Contacts._ID;
//查询获得游标
Cursor c = cr.query(uri, null, null, null, sortOrder);
//遍历
for(c.moveToFirst();!c.isAfterLast();c.moveToNext())
{
Log.i("people","**********************************************************");
//获得联系人的ID号
String contactId = c.getString(c.getColumnIndex(ContactsContract.Contacts._ID));
Log.i("people", "_ID="+contactId);
//获得联系人姓名
Log.i("people", "DISPLAY_NAME="+c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)));
//查看该联系人有多少个电话号码
int phoneCount = c.getInt(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
if(phoneCount>0)
{
Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID+ " = " + contactId, null, null);
for(phones.moveToFirst();!phones.isAfterLast();phones.moveToNext())
{
Log.i("people", "NUMBER="+phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));
}
}
}
Log.i("people","----------------------------------------------------------");
}
//添加联系人,name+tel
public void insert()
{
ContentValues values = new ContentValues();
Uri rawContactUri = getContentResolver().insert(ContactsContract.RawContacts.CONTENT_URI, values);
long rawContactId = ContentUris.parseId(rawContactUri);
//插入姓名
values.clear();
values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);
values.put(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, "sq");
values.put(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME, "c");
getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
//插入电话号码
values.clear();
values.put(ContactsContract.Contacts.Data.RAW_CONTACT_ID, rawContactId);
values.put(ContactsContract.Contacts.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, "13989297343");
values.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE);
getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
}