`
lee306675730
  • 浏览: 1634 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

android2.1获得联系人信息

阅读更多
貌似从android2.0开始,联系人的API做了很大的调整。
People接口由ContactsContract.Contacts代替。
闲话不多说看代码。
 public void getContact(){
    	 //获得所有的联系人
    	Cursor cur = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
    	//循环遍历
    	if (cur.moveToFirst()) {
    		int idColumn  = cur.getColumnIndex(ContactsContract.Contacts._ID);
    		
    		int displayNameColumn = cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
    		do {
    		    //获得联系人的ID号
    		   String contactId = cur.getString(idColumn);
    		   //获得联系人姓名
    		   String disPlayName = cur.getString(displayNameColumn);
    		   //查看该联系人有多少个电话号码。如果没有这返回值为0
    		   int phoneCount = cur.getInt(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
    		   if(phoneCount>0){
    			   //获得联系人的电话号码
	    		   Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID+ " = " + contactId, null, null);
	    		   if(phones.moveToFirst()){
	    			   do{
	    				   //遍历所有的电话号码
	    				   String phoneNumber= phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
	    				   System.out.println(phoneNumber);
	    			   }while(phones.moveToNext());
	    		   }
    		   
    		   }

            } while (cur.moveToNext());

    	}
     }

    在联系人的电话号码中有很多种,如果只想获得手机号码。代码如下:

  Cursor phones = mContext.getContentResolver().query(
				ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
				null,
				ContactsContract.CommonDataKinds.Phone.CONTACT_ID
						+ " = " + contactId +" and "+ContactsContract.CommonDataKinds.Phone.TYPE+"="+ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE, null, null);
分享到:
评论
9 楼 幽奇猫 2011-01-12  
得到联系人的资料很容易,名字,号码,一下就得到了,就像楼主写的这段代码。
只是现在俺的需求又进了一步,已经头疼两天了。

在添加联系人的界面(com.android.contacts.ui.EditContactActivity)下,要去得到用户在文本框里输入的名字,然后把输入的名字和电话本里现有的名字比较,如有重复,则提示用户。

头疼的来了!!——如何去得到用户在文本框里输入的文字?!?!?!

按常理是类似于((EditText)findViewById(R.id.xxxxx)).getText().toString;可问题是我找了半天,找不到任何一个EditText的影子……不知道被封装到哪里去了!!!也不知道文本框里的值在提交的时候存储在哪了!!!
流泪,急盼回答……谢谢各位大虾先!!!
8 楼 hm50854319 2011-01-10  
    正在做这个,因为英语不好,已经被困惑了两天,很受用。
7 楼 jakend 2010-10-25  
不过貌似效率不咋滴。
6 楼 时培峰 2010-09-15  
感激楼主 正在做这些方面的东西 多谢。
5 楼 mermaid 2010-05-02  
kelvinli 写道
刚才查了一下程序权限 机子是允许的 问题就奇怪了

你该不会是把权限加错了吧!
应用要使用手机的电话服务,要在清单文件AndroidManifest.xml中添加电话服务权限:

    <uses-permission android:name="android.permission.CALL_PHONE"/>
4 楼 kelvinli 2010-04-28  
刚才查了一下程序权限 机子是允许的 问题就奇怪了
3 楼 kelvinli 2010-04-28  
我在弄这段东西 但是权限受限了 加了 <uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
问题仍未解决
错误信息如下:
04-28 09:01:16.905: ERROR/dalvikvm(238): Unable to open stack trace file '/data/anr/traces.txt': Permission denied
2 楼 zhonggeneral 2010-04-24  
这东西官方网站都有,能不能弄个2.0后的添加联系人的demo,官方那个demo还是旧版的。
1 楼 lishali12345 2010-04-23  
不错的代码段,读来甚是受用啊!

相关推荐

    android-2.1-part3

    4. 内容提供者:内容提供者负责数据共享,让不同应用之间可以访问和交换数据,如联系人、日历等。 三、开发者更新 1. API Level 7:Android 2.1对应的API Level为7,新增了许多接口和类,如Location API的改进,...

    android-2.1-part6

    在Android 2.1中,数据同步功能得到了优化,支持更多的同步协议,包括Exchange,使得企业用户可以方便地与Exchange服务器进行邮件、日历和联系人同步。 6. **多点触控支持** Eclair开始支持多点触控,这为游戏和...

    android-2.1-part5

    10. **云同步服务**:增强了Google账户同步功能,包括联系人、日历和应用数据的云备份和恢复,确保用户数据的安全。 11. **应用市场改进**:Android Market也进行了更新,增加了用户评价和评分功能,以及应用筛选和...

    andriod2.1.zip

    3. **联系人应用**:在2.1版本中,联系人应用得到了增强,支持联系人分组和快速搜索,使得管理大量联系人变得更为便捷。同时,联系人照片的显示也更加生动和直观。 4. **谷歌地图与导航**:Android 2.1集成的谷歌...

    Android 1.5~2.1相关API升级变化对比.doc

    Android 2.0.1的API变更主要涉及快速联系人标记风格(quickContactBadgeStyle)的改进,以及ACTION_CONFIGURATION_CHANGED广播的处理。现在,应用必须通过`registerReceiver(BroadcastReceiver, IntentFilter)`来...

    android日程安排及联系人与web同步

    Android的联系人应用允许用户管理他们的联系人信息,包括姓名、电话号码、电子邮件地址等。Android提供了Contacts Provider,一个内置的Content Provider,用于存储和检索联系人数据。开发者可以通过ContentResolver...

    动物的声音 3.7.2.1

    权限的解释:*修改SD / USB存储内容:能够将它复制到SD卡或USB存储和写入临时文件共享时的声音总上网查看网络状态:AdMob广告,匿名统计数据和获得的“最流行”列表*读取和写入联系人数据:可以为特定的联系人设置...

    获取通讯录的信息,头像、姓名、号码等

    `contactsList`是这个列表的实例,而`addmap()`方法用于将新获取的联系人信息添加到这个列表中。 接下来,我们获取联系人信息的关键步骤是使用`ContentResolver`和`Cursor`。`ContentResolver`是Android系统用来...

    android 源代码

    4. **应用程序**:虽然主要关注的是系统组件,但源代码也包含了预装的一些基本应用,如联系人、日历、电话和设置应用。这对于学习如何构建遵循Android设计原则的应用非常有帮助。 5. **构建系统**:Android的构建...

    Android开发案例驱动教程 配套代码

    11.3.2 通过联系人ID查询联系人的Email 258 11.3.3 按照过滤条件查询Email 259 11.3.4 查询联系人的电话 261 11.4 通过Content Provider访问通话记录 262 11.4.1 查询通话记录 262 11.4.2 按照过滤条件查询通话...

    google android最全面的学习资料

    3)通过邮件直接联系项目发起人反馈信息;4)加入QQ交流群实时反馈问题。这些方式不仅降低了参与的门槛,还充分利用了社区的力量,让整个项目能够持续地获得改善。 参与翻译的成员名单中,可以看到很多GitHub ID,...

    android 读取电话号码

    通过上述代码示例,我们可以了解如何使用`ContentResolver`和`Cursor`来查询和获取联系人信息,以及如何正确地处理权限问题。这不仅有助于理解基本的Android编程概念,还能够帮助开发者实现更复杂的应用功能。

    android-support-v4 最新版本 解决Android6.0以上系统权限问题

    例如,如果应用需要访问用户的联系人信息,但在运行时未获取到相应的权限,可以调用`requestPermissions`来弹出权限请求对话框。`requestPermissions`接收两个参数:一个字符串数组,包含需要请求的权限;另一个是...

    把所有手机联系人导出到一个vcf文件中

    3. **解析联系人**:遍历Cursor,将每个联系人的信息转化为vCard对象。Android-vCard库提供了一个VCardBuilder类,可以帮助我们构建vCard实例: ```java VCardBuilder builder = new VCardBuilder(); while ...

    Android 编年史详细介绍

    Android 2.0/2.1 “爱曲奇/甜甜圈” - 发布时间:2009年10月/2010年1月 - 主要改进:增强了联系人管理功能,改善了浏览器和摄像头性能,支持多账户同步,并提高了整体稳定性。 ##### 3. Android 2.2 “冻酸奶” ...

    android权限

    - `android.permission.WRITE_CONTACTS`:允许应用修改用户的联系人信息。 同样地,在Android 6.0及更高版本中也需要进行动态权限请求。 ### 四、总结 通过对上述权限的详细介绍可以看出,在Android应用开发过程中...

    基于android系统的同学录的实现.doc

    在这样的背景下,开发基于Android系统的同学录应用显得尤为重要,它能够帮助用户高效地管理联系人信息,满足用户在社交、沟通中的需求。 1.2 研究现状 当前,市场上已经存在多种通讯录应用,如Google Contacts、...

    疯狂Android讲义源码

     联系人 355  9.2.2 使用ContentProvider管理  多媒体内容 360  9.3 实现ContentProvider 364  9.3.1 创建ContentProvider的步骤 364  9.4 监听ContentProvider的数据  改变 370  9.4.1 ContentObserver简介...

Global site tag (gtag.js) - Google Analytics