我把从数据库获得的数据逐条添加到手机中,但是遇到相同的名字(即使名和姓分开不同,连起来相同)就会自动的添加到一个下边,但还是两条记录,有人遇到过这种情况吗,我想让它们分开,每次遇见一个名字就添加一条新的记录,该怎样解决呢
我现在的代码是这样的
for (int i = 0; i < contactList.size(); i++) {
values = new ContentValues();
Uri rawContactUri = contentResolver.insert(RawContacts.CONTENT_URI,
values);
long rawContactId = ContentUris.parseId(rawContactUri); // 添加名字
values.clear();
values.put(Data.RAW_CONTACT_ID, rawContactId);
values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
values.put(StructuredName.GIVEN_NAME, contactList.get(i).firstName);
values.put(StructuredName.FAMILY_NAME, contactList.get(i).lastName);
contentResolver.insert(Data.CONTENT_URI, values);
// 添加号码
values.clear();
values.put(Data.RAW_CONTACT_ID, rawContactId);
values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
values.put(Phone.TYPE, contactList.get(i).phoneType);
values.put(Phone.NUMBER, contactList.get(i).phone);
contentResolver.insert(Data.CONTENT_URI, values); // 添加邮箱
values.clear();
values.put(Data.RAW_CONTACT_ID, rawContactId);
values.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);
values.put(Email.DATA, contactList.get(i).email);
contentResolver.insert(Data.CONTENT_URI, values); // 添加地址
values.clear();
values.put(Data.RAW_CONTACT_ID, rawContactId);
values.put(Data.MIMETYPE, StructuredPostal.CONTENT_ITEM_TYPE);
values.put(StructuredPostal.STREET, contactList.get(i).street);
values.put(StructuredPostal.COUNTRY, contactList.get(i).country);
values.put(StructuredPostal.CITY, contactList.get(i).city);
values.put(StructuredPostal.REGION, contactList.get(i).state);
values.put(StructuredPostal.POSTCODE, contactList.get(i).postCode);
contentResolver.insert(Data.CONTENT_URI, values);
}
我现在的代码是这样的
for (int i = 0; i < contactList.size(); i++) {
values = new ContentValues();
Uri rawContactUri = contentResolver.insert(RawContacts.CONTENT_URI,
values);
long rawContactId = ContentUris.parseId(rawContactUri); // 添加名字
values.clear();
values.put(Data.RAW_CONTACT_ID, rawContactId);
values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
values.put(StructuredName.GIVEN_NAME, contactList.get(i).firstName);
values.put(StructuredName.FAMILY_NAME, contactList.get(i).lastName);
contentResolver.insert(Data.CONTENT_URI, values);
// 添加号码
values.clear();
values.put(Data.RAW_CONTACT_ID, rawContactId);
values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
values.put(Phone.TYPE, contactList.get(i).phoneType);
values.put(Phone.NUMBER, contactList.get(i).phone);
contentResolver.insert(Data.CONTENT_URI, values); // 添加邮箱
values.clear();
values.put(Data.RAW_CONTACT_ID, rawContactId);
values.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);
values.put(Email.DATA, contactList.get(i).email);
contentResolver.insert(Data.CONTENT_URI, values); // 添加地址
values.clear();
values.put(Data.RAW_CONTACT_ID, rawContactId);
values.put(Data.MIMETYPE, StructuredPostal.CONTENT_ITEM_TYPE);
values.put(StructuredPostal.STREET, contactList.get(i).street);
values.put(StructuredPostal.COUNTRY, contactList.get(i).country);
values.put(StructuredPostal.CITY, contactList.get(i).city);
values.put(StructuredPostal.REGION, contactList.get(i).state);
values.put(StructuredPostal.POSTCODE, contactList.get(i).postCode);
contentResolver.insert(Data.CONTENT_URI, values);
}
解决方案 »
- android异步获取图片并且本地存储的后续问题!
- Button r=new Button(this); 就出错,不知道什么原因?
- ViewFlipper多个View时,下面有多个点,表示当前激活的View
- android 安装问题
- 啥时候变成这样了啊?强制使用action bar?
- 自定义Dialog里顶部、底部各有一条线是什么,怎么取消掉
- sqlite3 中文乱码
- 大神求救啊,给listview设置一个上下文菜单,然后长按listview后出现的上下文菜单标题上怎么得到关于选中的item的信息
- jquery mobile用表格的时候如何去掉右上角的column?
- 转AS不会用啊
- 求证运行eclipse的工程,让启动的模拟器加载自己编译出来的sdk的方法?
- 多activity并存的问题
问题是这样的
在contacts provider的代码里面会起一个线程去不断的寻找同名的contact然后合并起来。
你如果能改源码的话可以去看看
在应用里也能把一个联系人join到另一个联系人当中
只不过是同名的联系人contacts provider会把他们自动join在一起。
研究下provider里的表结构,join的实现
或者可以直接把自动join的线程停掉。