最近项目需求需要把蓝牙通讯录同步到系统通讯录里面,需要对系统通讯录进行操作
1.操作数据库为:/data/data/com.android.providers.contacts/databases.contacts2.db
2.操作表:主要对data表进行操作
具体直接贴代码
public class ContactsUtil {
private static final String TAG = "ContactsUtil";
@SuppressWarnings("deprecation")
public static boolean insert(Context context,String name, String phoneNum,String address) {
if (name == null) {
Log.e(TAG, "The Name is not allow null!!");
return false;
}
try {
ContentValues values = new ContentValues();
Uri rawContactUri = context.getContentResolver().insert(RawContacts.CONTENT_URI, values);
long rawContactId = ContentUris.parseId(rawContactUri);//二、对联系人的基本操作(8)
// 向data表插入姓名数据
if (name != "")
{
values.clear();
values.put(Data.RAW_CONTACT_ID, rawContactId);
values.put(Data.MIMETYPE,
StructuredName.CONTENT_ITEM_TYPE);
values.put(StructuredName.GIVEN_NAME, name);
context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI,
values);
}
// 向data表插入电话数据
if (phoneNum != "")
{
values.clear();
values.put(Data.RAW_CONTACT_ID, rawContactId);
values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
values.put(Phone.NUMBER, phoneNum);
values.put(Phone.TYPE, Phone.TYPE_MOBILE);
context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI,
values);
}
// 向data表插入地址数据
if (address != "")
{
values.clear();
values.put(Data.RAW_CONTACT_ID, rawContactId);
values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
values.put(Phone.DATA8, address);
context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI,
values);
}
} catch (Exception e) {
Log.e(TAG, "InsertContact Error !!!!");
return false;
}
return true;
}
/**
* 删除指定联系人
* @param rawContactId
* @param context
*/
public void delete(Context context,long rawContactId){
context.getContentResolver().delete(ContentUris.withAppendedId(
RawContacts.CONTENT_URI, rawContactId), null, null);
}
/**
* 删除所有联系人
* @param context
*/
public static void deleteAllContacts(Context context){
context.getContentResolver().delete(RawContacts.CONTENT_URI, null, null);
}
/**
*仅仅用于判断该蓝牙设备是否有联系人
*/
public static boolean queryCurrentContacts(Context context,String address){
// 获取用来操作数据的类的对象,对联系人的基本操作都是使用这个对象
ContentResolver cr = context.getContentResolver();
String selection = Phone.DATA8 + " = ?";
String[] selectionArgs = {address};
Uri phoneUri=Uri.parse("content://com.android.contacts/data/phones");//对联系人的基本操作
// 查询contacts表的所有记录
Cursor cur = cr.query(phoneUri, null,selection,selectionArgs, null);
if ((null != cur) && (cur.getCount() > 0)){
Log.d(TAG, "查询到有数据数量为:"+cur.getCount());
return true;
}
return false;
}
}
部分转自http://blog.csdn.net/lksodit_yiyi/article/details/7887348