`
bkship
  • 浏览: 48309 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

联系人的基本操作

阅读更多

 

其实联系人那几个表刚开始看起来很绕的!

 

后来接触多了,慢慢的感觉好了点。

 

经常总结下,也方便以后回头查找!

 

这三个表: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, nullnullnullsortOrder);

 

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,nullnullnullnull);

 

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 联系人数据库介绍以及对联系人的基本操作.ppt

    Android 联系人数据库介绍及基本操作 Android 联系人数据库是 Android 操作系统中用于存储手机联系人的数据库。下面将对 Android 联系人数据库进行介绍,并对联系人的基本操作进行讲解。 一、联系人数据库 联系人...

    Android_联系人数据库介绍以及对联系人的基本操作

    联系人的数据库文件的位置 /data/data/com.android.providers.contacts/databases.contacts2.db 数据库中重要的几张表 1、contacts表 该表保存了所有的手机测联系人,每个联系人占一行,该表保存了联系人的...

    基于Android2.2的联系人的基本操作(带注释)

    本文将深入探讨这个主题,主要关注如何进行联系人的基本操作,包括读取、添加、修改和删除联系人。这份源码带有详细注释,非常适合初学者作为入门教材。 首先,Android的联系人操作涉及ContentResolver和...

    swift-ZHContactManager-通讯录操作选择联系人添加新联系人添加到现有联系人;

    除了基本的联系人操作,`ZHContactManager`还集成了与通讯功能的联动,如打电话、发送短信和邮件。通过调用相应的API,开发者可以直接触发这些操作,而无需离开应用程序。这不仅提高了用户界面的流畅性,也增强了...

    iPhone通讯录联系人操作大全

    在IT行业中,尤其是在移动...综上所述,“iPhone通讯录联系人操作大全”涵盖的内容广泛,从基本的联系人管理操作到高级的编程技巧,为用户提供了一站式的解决方案。通过阅读博文链接,可以获取更深入的指导和实践建议。

    android 联系人模块例子

    在Android平台上,联系人管理是应用开发中常见且重要...通过这个例子,初学者可以快速掌握Android联系人管理的基本操作,并在此基础上进行更复杂的定制和扩展。记得在实际开发中遵循最佳实践,保证用户体验和数据安全。

    2.2联系人的一些操作

    "2.2联系人的一些操作"这个主题涵盖了如何在Android系统中进行联系人管理的基本操作,包括读取、添加、修改和删除联系人。这篇博客文章可能是对这一主题的深入探讨。 在Android系统中,联系人数据存储在Content ...

    C++实现通讯录管理系统(OOP类,链表,文件读取等操作实现通讯录的基本功能)

    删除联系人:按照联系人基本信息进行删除指定联系人 查找联系人:按照联系人基本信息查看指定联系人信息 修改联系人:按照联系人信息重新修改指定联系人 清空联系人:清空通讯录中所有信息 读取文件:打开文件并读取...

    android 联系人 SIM卡 最近联系人 通讯录 获取源代码

    获取所有联系人的基本步骤如下: - 创建`ContentResolver`对象。 - 使用`ContentResolver.query()`方法,传入`ContactsContract.Contacts.CONTENT_URI`,并指定需要的列。 - 处理返回的`Cursor`,获取每个联系人...

    联系人API 示例

    在"TestContacts"这个示例中,可能包含了一个简单的应用程序,展示了如何使用联系人API的基本操作。例如,它可能有一个功能是列出设备上的所有联系人,这可以通过执行以下步骤实现: 1. 创建一个`ContentResolver`...

    android联系人管理

    本项目“Android联系人管理”旨在提供一个基本的实现,涵盖新建、编辑、删除联系人以及对联系人分组的操作。下面将详细阐述这个项目中的核心知识点。 1. **联系人ContentProvider**: Android中的联系人数据存储在...

    C#写的sim卡与WM6联系人互操作程序

    总的来说,这个C#编写的SIM卡与WM6联系人互操作程序展示了如何利用.NET Compact Framework在移动设备上进行开发,涵盖了数据读取、写入、删除等基本操作,为其他复杂的业务逻辑提供了基础。对于想要学习WM6开发的...

    联系人信息管理(asp.net)

    这个系统提供了基本的CRUD(创建、读取、更新、删除)功能,允许用户对联系人信息进行增删改查操作。 【描述】提到,这个项目是一个初步的框架,它可能包含了一个基础的后端逻辑处理和前端展示部分。虽然CSS样式表...

    C++通讯录管理系统,包含添加、删除、修改联系人等基本功能

    它通过一系列基本操作(如添加、删除、修改联系人信息)帮助用户高效地管理和查找联系信息。该系统不仅能够存储联系人的基本信息,还能提供友好的用户界面来辅助完成各种任务。 #### 二、关键组件与功能 1. **基本...

    android_实战_联系人

    在Android开发中,联系人管理是一项基础且重要的功能,它涉及到对...通过这个项目,开发者不仅能了解ContentProvider的基本使用,还能掌握如何在实际场景中处理联系人数据,这在开发涉及用户个人信息的应用时尤其重要。

    outlook2013查看建议的联系人

    要查看Outlook 2013中的“建议的联系人”,你可以按照以下步骤操作: 1. 打开Outlook 2013程序,确保你已经登录了你的账户。 2. 在主界面左侧的导航栏中找到“联系人”选项,点击进入联系人模块。 3. 在联系人模块...

    通讯录管理系统 实现显示添加、删除、查询、显示分组和联系人

    这一过程中涉及的编程技术可能包括数据结构(如链表或哈希表)用于存储联系人信息,以及用户界面设计,以确保操作的直观性和易用性。 其次,分组功能是提高管理效率的重要手段。通过将联系人按照工作、家庭、社交等...

    【数据结构课程设计】单链表的基本操作(含源代码)

    在本课程设计中,我们将重点关注单链表这一基本的数据结构,并通过VC++6.0这一经典集成开发环境,使用C/C++语言来实现其基本操作。 单链表是一种线性数据结构,其中每个元素(称为节点)包含两部分:数据域和指针域...

    android添加联系人

    以上就是Android系统中添加联系人的基本流程。在实际开发中,你可能还需要考虑错误处理、用户界面设计、权限管理等因素。通过熟练掌握这些知识,你可以创建一个简单的Activity,允许用户直接向系统表添加包含姓名、...

    安卓联系人代码

    以上就是关于“安卓联系人代码”的核心知识点,包括从手机或SIM卡读取联系人、进行打电话和发送短信的基本操作,以及对联系人数据库的增删改查。在实际开发中,还需要根据具体需求进行定制化设计,以满足用户的各种...

Global site tag (gtag.js) - Google Analytics