其实联系人那几个表刚开始看起来很绕的!
后来接触多了,慢慢的感觉好了点。
经常总结下,也方便以后回头查找!
这三个表:Raw_contacts, Data ,Contacts
Raw_contacts:这个表放的是联系人的唯一标识,ID啦!其他的两个表里面有个rawContactID是对应的外键。
Data :这个放的是联系人的具体的信息,像号码啦,邮箱啦,地址啦 之类的
Contacts:这个放的就是一条条的联系人,主要存的是display_name啊,有没号码啦。
其他还有一些子类也经常遇到像CommonDataKinds这样的!
刚开始插入一个联系人的时候查了好多资料,最后才发现姓名跟号码是要分开来插入的,因为类型不同!
其实这些例子在API里面都有的!
查询通讯录中的信息:
ContentResolver contentResolver = this.getContext().getContentResolver();
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
Cursor nameCursor = contentResolver.query(Contacts.CONTENT_URI, null, null, null, sortOrder);
if(null != nameCursor && nameCursor .moveToFirst() ){
do{
String id = nameCursor .getInt(
nameCursor .getColumnIndex(ContactsContract.Contacts._ID));
//获取联系人姓名
String name =nameCursor .getString(
nameCursor .getColumnIndex(PhoneLookup.DISPLAY_NAME));
}while(nameCursor .moveToNext());
nameCursor .close();
}
//获取联系人号码查询
Cursor numCursor = ctx.getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null, null, null, null);
if(numCursor!=null&&numCursor.getCount()!=0){
do{
String nummber = numCursor.getString(numCursor.getColumnIndex(
ContactsContract.CommonDataKinds.Phone.NUMBER));
}while(numCursor.moveToNext());
numCursor.close();
}
//记得每次都要去关掉游标,上次就是因为没关游标导致的错误。忘记报的什么错误了!好像就是下标最多2000那样
插入一个新的联系人记录:
代码懒得自己写了,引用wenlin56的帖子中 现成的代码,以下是原帖链接:
http://blog.csdn.net/wenlin56/archive/2010/12/14/6074437.aspx
有个要注意的地方就是插入详细信息到DATA里面 必须要先得到那个rawContactId,所以之前要插一个空值来获得这个!
ContentValues values = new ContentValues();
Uri rawContactUri = ctx.getContentResolver().insert(
RawContacts.CONTENT_URI, values);
// 然后获取系统返回的rawContactId , 就是新加入的这个联系人的 ID
long rawContactId = ContentUris.parseId(rawContactUri);
// Andorid 中,将联系人的姓名、电话 分别存放在 data 表的同一个字段的两条记录当中 类型不同 因此要 Insert 两次
// 往data表入姓名数据
values.clear();
// raw_contacts_id 字段,是 raw_contacts表id 的外键,用于说明此记录属于哪一个联系人
values.put(Data.RAW_CONTACT_ID, rawContactId);
// mimitype_id 字段,用于描述此数据的类型,电话号码?Email?....
values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
values.put(StructuredName.GIVEN_NAME, “唐自刚”);
ctx.getContentResolver().insert(
android.provider.ContactsContract.Data.CONTENT_URI, values);
// 往data表入电话数据
values.clear();
values.put(Data.RAW_CONTACT_ID, rawContactId);
values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
values.put(Phone.NUMBER, “18610230851”);
values.put(Phone.TYPE, Phone.TYPE_MOBILE);
ctx.getContentResolver().insert(
android.provider.ContactsContract.Data.CONTENT_URI, values);
顺便补充下查询SIM卡联系人
Uri uri = Uri.parse("content://icc/adn");
ContentResolver cr = ctx.getContentResolver();
Cursor cursor = cr.query(uri, null, null, null, null);
//不遍历游标了,你看得懂的!
name = cursor.getString(cursor.getColumnIndex(People.NAME));
number = cursor.getString(cursor.getColumnIndex(People.NUMBER));
这篇就写到这里了! 想要继续看批量添加联系人的话 moveToNext();
分享到:
相关推荐
Android 联系人数据库介绍及基本操作 Android 联系人数据库是 Android 操作系统中用于存储手机联系人的数据库。下面将对 Android 联系人数据库进行介绍,并对联系人的基本操作进行讲解。 一、联系人数据库 联系人...
联系人的数据库文件的位置 /data/data/com.android.providers.contacts/databases.contacts2.db 数据库中重要的几张表 1、contacts表 该表保存了所有的手机测联系人,每个联系人占一行,该表保存了联系人的...
本文将深入探讨这个主题,主要关注如何进行联系人的基本操作,包括读取、添加、修改和删除联系人。这份源码带有详细注释,非常适合初学者作为入门教材。 首先,Android的联系人操作涉及ContentResolver和...
除了基本的联系人操作,`ZHContactManager`还集成了与通讯功能的联动,如打电话、发送短信和邮件。通过调用相应的API,开发者可以直接触发这些操作,而无需离开应用程序。这不仅提高了用户界面的流畅性,也增强了...
在IT行业中,尤其是在移动...综上所述,“iPhone通讯录联系人操作大全”涵盖的内容广泛,从基本的联系人管理操作到高级的编程技巧,为用户提供了一站式的解决方案。通过阅读博文链接,可以获取更深入的指导和实践建议。
在Android平台上,联系人管理是应用开发中常见且重要...通过这个例子,初学者可以快速掌握Android联系人管理的基本操作,并在此基础上进行更复杂的定制和扩展。记得在实际开发中遵循最佳实践,保证用户体验和数据安全。
"2.2联系人的一些操作"这个主题涵盖了如何在Android系统中进行联系人管理的基本操作,包括读取、添加、修改和删除联系人。这篇博客文章可能是对这一主题的深入探讨。 在Android系统中,联系人数据存储在Content ...
删除联系人:按照联系人基本信息进行删除指定联系人 查找联系人:按照联系人基本信息查看指定联系人信息 修改联系人:按照联系人信息重新修改指定联系人 清空联系人:清空通讯录中所有信息 读取文件:打开文件并读取...
获取所有联系人的基本步骤如下: - 创建`ContentResolver`对象。 - 使用`ContentResolver.query()`方法,传入`ContactsContract.Contacts.CONTENT_URI`,并指定需要的列。 - 处理返回的`Cursor`,获取每个联系人...
在"TestContacts"这个示例中,可能包含了一个简单的应用程序,展示了如何使用联系人API的基本操作。例如,它可能有一个功能是列出设备上的所有联系人,这可以通过执行以下步骤实现: 1. 创建一个`ContentResolver`...
本项目“Android联系人管理”旨在提供一个基本的实现,涵盖新建、编辑、删除联系人以及对联系人分组的操作。下面将详细阐述这个项目中的核心知识点。 1. **联系人ContentProvider**: Android中的联系人数据存储在...
总的来说,这个C#编写的SIM卡与WM6联系人互操作程序展示了如何利用.NET Compact Framework在移动设备上进行开发,涵盖了数据读取、写入、删除等基本操作,为其他复杂的业务逻辑提供了基础。对于想要学习WM6开发的...
这个系统提供了基本的CRUD(创建、读取、更新、删除)功能,允许用户对联系人信息进行增删改查操作。 【描述】提到,这个项目是一个初步的框架,它可能包含了一个基础的后端逻辑处理和前端展示部分。虽然CSS样式表...
它通过一系列基本操作(如添加、删除、修改联系人信息)帮助用户高效地管理和查找联系信息。该系统不仅能够存储联系人的基本信息,还能提供友好的用户界面来辅助完成各种任务。 #### 二、关键组件与功能 1. **基本...
在Android开发中,联系人管理是一项基础且重要的功能,它涉及到对...通过这个项目,开发者不仅能了解ContentProvider的基本使用,还能掌握如何在实际场景中处理联系人数据,这在开发涉及用户个人信息的应用时尤其重要。
要查看Outlook 2013中的“建议的联系人”,你可以按照以下步骤操作: 1. 打开Outlook 2013程序,确保你已经登录了你的账户。 2. 在主界面左侧的导航栏中找到“联系人”选项,点击进入联系人模块。 3. 在联系人模块...
这一过程中涉及的编程技术可能包括数据结构(如链表或哈希表)用于存储联系人信息,以及用户界面设计,以确保操作的直观性和易用性。 其次,分组功能是提高管理效率的重要手段。通过将联系人按照工作、家庭、社交等...
在本课程设计中,我们将重点关注单链表这一基本的数据结构,并通过VC++6.0这一经典集成开发环境,使用C/C++语言来实现其基本操作。 单链表是一种线性数据结构,其中每个元素(称为节点)包含两部分:数据域和指针域...
以上就是Android系统中添加联系人的基本流程。在实际开发中,你可能还需要考虑错误处理、用户界面设计、权限管理等因素。通过熟练掌握这些知识,你可以创建一个简单的Activity,允许用户直接向系统表添加包含姓名、...
以上就是关于“安卓联系人代码”的核心知识点,包括从手机或SIM卡读取联系人、进行打电话和发送短信的基本操作,以及对联系人数据库的增删改查。在实际开发中,还需要根据具体需求进行定制化设计,以满足用户的各种...