- 浏览: 87817 次
- 性别:
- 来自: 北京
最新评论
-
LiuYiJie2007:
public static String getPublicK ...
Android publickey获取 -
LiuYiJie2007:
getPublicKey( )是你自己写法方法 是什么?new ...
Android publickey获取 -
liujia9234:
我试了,不行,最不靠谱了
最靠谱的禁止ViewPager滑动方法 -
kedongjun:
非常强大
关于android通讯录加载大数据的优化问题 -
xunhuan01:
view.getImageMatrix(), savedMat ...
多点触摸放大图片的自定义listener
学习使用Android联系人数据库。要求懂得基本的SQLite的知识。可以查看 Android SQLite and Cursor Article相关文章以获取更多信息。从Android 1.x 至 2.0 版本谷歌改变了Android的联系人数据库。该手册主要分为三个部分:一是介绍2.0中访问名片夹;二是介绍1.6之前的版本;三我们综合了为每个版本给出一个抽象类和累积来管理名片记录数据。
Android Contact API For 2.0
Granting Access 授予权限
AndroidManifest.xml文件中授予以下权限
<uses-permission android:name="android.permission.READ_CONTACTS" />
Querying The Android Contact Database 联系人数据库查询
基本的个人信息存储在名片夹表,而详细的存储在个人表里。在Andoid2.0中查询相应联系记录的URI是ContactsContract.Contacts.CONTENT_URI。
启动该应用程序时需关闭任何其他Android应用程序。首先,创建一个ContentResolver的实例cr。然后使用ContentResolver的实例查询数据库并返回联系人列表游标。该查询是针对ContactsContract.Contacts.CONTENT_URI 进行存储的URI。下一步检查游标是否包含记录,如果包含记录,侧记录ID字段的值存储在ID变量中。他将作为一个参数在后面的地方使用。也把名称字段的值存储在name变量中。对于游标的更多详细用法可以查看 Android的游标教程 。
Phone Numbers 电话号码
电话号码存储在它们自己的表中,需要单独进行查询。要查询的电话号码表使用的是SDK中的变量ContactsContract.CommonDataKinds.Phone.CONTENT_URI存储的URI。使用WHERE条件得到指定联系人的电话号码。
在Android联系人SQLite数据库中执行第二个查询。查询的电话号码是针对ContactsContract.CommonDataKinds.Phone.CONTENT_URI存储的URI。CONTACT_ID存储在电话表中,ContactsContract.CommonDataKinds.Phone.CONTACT_ID和where子句用于限制返回的数据。
Email Addresses 电子邮件地址
Cursor emailCur = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", new String[]{id}, null);
while (emailCur.moveToNext()) {
//如果email地址被保存在一个数组中,你将得到多个邮件地址 String email =
Postal Addresses 邮政地址
Instant Messenger (IM) 即时消息
Organizations 组织
Android Contact API For 2.0
Granting Access 授予权限
AndroidManifest.xml文件中授予以下权限
<uses-permission android:name="android.permission.READ_CONTACTS" />
Querying The Android Contact Database 联系人数据库查询
基本的个人信息存储在名片夹表,而详细的存储在个人表里。在Andoid2.0中查询相应联系记录的URI是ContactsContract.Contacts.CONTENT_URI。
package com.test;import android.app.Activity; import android.database.Cursor;import android.os.Bundle; import android.provider.ContactsContract; import android.provider.ContactsContract.Contacts; public class TestContacts extends Activity { @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); ContentResolver cr = getContentResolver(); Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);//查询通讯录 if(cursor.getCount()>0){ while (cursor.moveToNext()) { String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));//联系人id String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));//联系人名称 if(cursor.getInt(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))>0) { //Query phone here. Covered next 在该处查询电话号码 } } } } }
启动该应用程序时需关闭任何其他Android应用程序。首先,创建一个ContentResolver的实例cr。然后使用ContentResolver的实例查询数据库并返回联系人列表游标。该查询是针对ContactsContract.Contacts.CONTENT_URI 进行存储的URI。下一步检查游标是否包含记录,如果包含记录,侧记录ID字段的值存储在ID变量中。他将作为一个参数在后面的地方使用。也把名称字段的值存储在name变量中。对于游标的更多详细用法可以查看 Android的游标教程 。
Phone Numbers 电话号码
电话号码存储在它们自己的表中,需要单独进行查询。要查询的电话号码表使用的是SDK中的变量ContactsContract.CommonDataKinds.Phone.CONTENT_URI存储的URI。使用WHERE条件得到指定联系人的电话号码。
//根据ID查询出电话号码 Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", new String[]{id}, null); while (pCur.moveToNext()) { // Do something with phones } pCur.close();
在Android联系人SQLite数据库中执行第二个查询。查询的电话号码是针对ContactsContract.CommonDataKinds.Phone.CONTENT_URI存储的URI。CONTACT_ID存储在电话表中,ContactsContract.CommonDataKinds.Phone.CONTACT_ID和where子句用于限制返回的数据。
Email Addresses 电子邮件地址
Cursor emailCur = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", new String[]{id}, null);
while (emailCur.moveToNext()) {
//如果email地址被保存在一个数组中,你将得到多个邮件地址 String email =
emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); String emailType = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE)); } emailCur.close();
Notes 注释
String noteWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?"; String[] noteWhereParams = new String[]{id,ContactsContract.CommonDataKinds.Note.CONTENT_ITEM_TYPE}; Cursor noteCur = cr.query(ContactsContract.Data.CONTENT_URI, null, noteWhere, noteWhereParams, null); if (noteCur.moveToFirst()) { String note = noteCur.getString(noteCur.getColumnIndex(ContactsContract.CommonDataKinds.Note.NOTE)); } noteCur.close();
Postal Addresses 邮政地址
String addrWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?"; String[] addrWhereParams = new String[]{id,ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE}; Cursor addrCur = cr.query(ContactsContract.Data.CONTENT_URI,null, addrWhere, addrWhereParams, null); while(addrCur.moveToNext()) { String poBox = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POBOX)); String street = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.STREET)); String city = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.CITY)); String region = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.REGION)); String postalCode = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE)); String country = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY)); String type = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.TYPE)); } addrCur.close();
Instant Messenger (IM) 即时消息
String imWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?"; String[] imWhereParams = new String[]{id,ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE}; Cursor imCur = cr.query(ContactsContract.Data.CONTENT_URI,null, imWhere, imWhereParams, null); if (imCur.moveToFirst()) { String imName = imCur.getString(imCur.getColumnIndex(ContactsContract.CommonDataKinds.Im.DATA)); String imType = imCur.getString(imCur.getColumnIndex(ContactsContract.CommonDataKinds.Im.TYPE)); } imCur.close();
Organizations 组织
String orgWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?"; String[] orgWhereParams = new String[]{id,ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE}; Cursor orgCur = cr.query(ContactsContract.Data.CONTENT_URI,null, orgWhere, orgWhereParams, null); if (orgCur.moveToFirst()) { String orgName = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.DATA)); String title = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.TITLE)); } orgCur.close();
发表评论
-
Android_低版本使用ActionBar
2014-08-26 11:09 1096转载 http://blog.csdn.net/tianjf0 ... -
如何屏蔽android webview高度选中框
2014-02-19 12:04 747如标题所述,解决方法是在 html的样式中加入 *{-webk ... -
屏蔽ScrollView惯性滚动的方法
2013-08-08 13:36 5714ScrollView中有一种惯性滚动的效果,想让这个Scrol ... -
android 图片LOMO效果
2013-07-25 13:59 872import android.graphics.Bitmap; ... -
GitHub最火的android 项目
2013-07-25 13:14 780GitHub在中国的火爆程度无需多言,越来越多的开源项目迁移到 ... -
listview 点击列表项时,项中的Button会触发点击效果
2013-06-05 19:21 1284开发中,难免会在列表项中, 加入Button ,而button ... -
圆形不滚动的进度条
2013-05-17 11:38 849这种效果的进度条 代码如下: package com. ... -
最靠谱的禁止ViewPager滑动方法
2013-05-15 14:44 4957最近做项目要求某种情况下ViewPager不能滑动,在网上找了 ... -
viewpager主页面响应子页面 onkeydown事件的方法
2013-05-13 19:35 1618大家在开发中不少地方要用到ViewPager这个类,ViewP ... -
Mina 学习笔记 TCP主要接口
2013-05-05 23:21 1225(1.)IoService: 这个接口 ... -
android动画插件器
2013-04-27 10:01 830首先要了解为什么需要插值器,因为在补间动画中,我们一般只定义关 ... -
imageView 的 android:maxHeight,maxWidth属性
2013-03-29 10:17 816大家使用android:maxHeight,maxWidth属 ... -
android中获取下载地址文件的类型的方法
2013-03-28 11:33 1025MimeTypeMap mimeTypeMap = Mime ... -
res与res-auto的区别
2013-03-27 14:55 3961通常我们在布局文件中使用自定义属性的时候 会这样写 xmln ... -
滑动开关控件
2013-03-26 22:39 815public class SlidButton exten ... -
TextView使用SpannableString设置复合文本
2013-03-23 23:35 8791、BackgroundColorSpan 背景色 Sp ... -
Android编程之SparseArray<E>详解
2013-03-21 23:03 984一、构造 从构造方法我 ... -
判断系统是否支持 DownloadManager服务
2013-03-18 14:25 862public static boolean isDownloa ... -
android ndk native_activity.h
2013-03-12 15:25 1767#ifndef ANDROID_NATIVE_ACTIVITY ... -
android ndk obb.h
2013-03-12 15:14 1133#ifndef ANDROID_OBB_H #define A ...
相关推荐
在深入探讨《Android Contacts查询全过程》这一主题时,我们首先需理解其核心概念与操作流程。此篇文章聚焦于Android系统中联系人数据的查询机制,尤其是通过代码层面解析这一过程,为开发者提供深入理解与实践指导...
Contacts是Android系统中的核心组件之一,它负责管理和展示设备上的联系人信息。在Android 4.1.1版本中,Contacts应用程序经过优化,提供了更加高效和用户友好的体验。本文将深度剖析这一版本的Contacts代码,帮助...
在Android 4.4系统中,Contacts应用是用户管理联系人的重要组成部分。它不仅负责显示、编辑和组织联系人的信息,还与其他系统服务如Google账户同步、来电显示等功能紧密协作。这里我们将深入探讨Android 4.4 ...
android Contacts 源码eclipse编译Contacts 联系人 eclipse 源码此为android Contacts 联系人源码在eclipse编译的APK。 可以运行在 android4.4 以及一下的系统中,本人通过大量修改 直接安装运行即可。
这里我们深入探讨“android Contacts”源码,这是一份非常有价值的参考资料,对于理解Android系统中联系人管理的内部工作原理以及学习如何开发自己的联系人应用具有重要意义。 1. **数据存储结构** Android的...
Android 4.0(冰淇淋三明治)的Contacts应用是Android系统中一个至关重要的组成部分,它管理着用户的联系人信息,提供查找、编辑和同步联系人的功能。了解并研究其源码能帮助开发者深入理解Android系统的内部工作...
Android 5.0对联系人应用进行了性能优化,例如使用CursorLoader减少内存占用,利用异步任务处理大数据集,以及利用硬件加速提升UI渲染速度。 9. **隐私与安全** 联系人应用尊重用户的隐私,只有在用户明确授权的...
Android Contacts API. Quick Start Initialize Contacts Library public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); Contacts.initialize(this); } ...
"android contacts"这一主题涉及了高效地处理联系人数据的关键技术,包括高效的联系人分组读取、完整的联系人列表展示、SQLite数据库的运用以及通过ksoap2调用Web服务。接下来,我们将详细探讨这些知识点。 1. **高...
在Contacts源码中,我们可以看到如何创建和操作联系人表,以及如何使用ContentProvider来封装数据库操作,提供统一的数据访问接口。 ContentProvider是Android系统中数据共享的关键组件,它使得不同的应用能够安全...
在深入学习Contacts模块之前,我们先探讨一个与Android UI设计相关的概念:ActionBar及其Tab导航。 在Android应用开发中,ActionBar是一个重要的组件,它通常位于屏幕顶部,用于展示应用的品牌标识、提供导航和操作...
在Android系统中,联系人应用(Contacts)是用户与他人通信信息的核心接口。它整合了电话簿、电子邮件、社交媒体等多种联系方式,为用户提供了一个统一的管理界面。本篇将深入探讨Android源码,揭示Contacts应用的...
"Android Contacts之三自定义的联系人列表特效 A" 主题着重于如何利用Android SDK和相关技术来实现一种独特的联系人展示方式。我们将深入探讨如何自定义联系人列表,使其不仅功能强大,而且视觉上引人注目。 首先,...
Contacts源码中的重点在于ContentProvider,它是Android四大组件之一,负责管理并分享应用程序的数据。 ContentProvider类`com.android.providers.contacts.ContactsProvider2`是Contacts应用的核心。它实现了...
在这个项目"Android Contacts之三自定义的联系人列表特效 b"中,开发者实现了一系列增强用户体验的功能,包括滑动特效、中文索引以及关键字搜索。下面我们将详细探讨这些知识点。 1. **滑动特效**:滑动特效是提升...
联系人(com.android.contacts).bak
这个项目的名字"AndroidContacts,安卓工作室联系方式.zip"暗示了它可能是由一个专注于Android开发的工作室创建,旨在提供一种更便捷的方式来处理手机中的联系人数据。通过分析这个项目的源代码,我们可以学习到如何...
在Android 1.6及更低版本中,接触API使用的是`Contacts`和`ContactsContract`的旧版。主要区别在于URI和数据模型。例如,获取所有联系人的URI是`ContactsgetContentResolver().query(ContactsContract....
一、Android Contacts 应用架构 Android Contacts 应用由多个模块组成,包括UI层、数据访问层和同步适配器等。UI层主要负责展示联系人列表和详细信息,而数据访问层则处理数据库操作,同步适配器则用于与服务器进行...
Content Providers是Android中负责数据共享的关键组件,Contacts Provider就是其中之一,它负责管理联系人数据库,提供数据读写接口。 在源码中,我们可以看到Contacts Provider主要由两个表构成:Contacts表和...