貌似从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);
分享到:
相关推荐
4. 内容提供者:内容提供者负责数据共享,让不同应用之间可以访问和交换数据,如联系人、日历等。 三、开发者更新 1. API Level 7:Android 2.1对应的API Level为7,新增了许多接口和类,如Location API的改进,...
在Android 2.1中,数据同步功能得到了优化,支持更多的同步协议,包括Exchange,使得企业用户可以方便地与Exchange服务器进行邮件、日历和联系人同步。 6. **多点触控支持** Eclair开始支持多点触控,这为游戏和...
10. **云同步服务**:增强了Google账户同步功能,包括联系人、日历和应用数据的云备份和恢复,确保用户数据的安全。 11. **应用市场改进**:Android Market也进行了更新,增加了用户评价和评分功能,以及应用筛选和...
3. **联系人应用**:在2.1版本中,联系人应用得到了增强,支持联系人分组和快速搜索,使得管理大量联系人变得更为便捷。同时,联系人照片的显示也更加生动和直观。 4. **谷歌地图与导航**:Android 2.1集成的谷歌...
Android 2.0.1的API变更主要涉及快速联系人标记风格(quickContactBadgeStyle)的改进,以及ACTION_CONFIGURATION_CHANGED广播的处理。现在,应用必须通过`registerReceiver(BroadcastReceiver, IntentFilter)`来...
Android的联系人应用允许用户管理他们的联系人信息,包括姓名、电话号码、电子邮件地址等。Android提供了Contacts Provider,一个内置的Content Provider,用于存储和检索联系人数据。开发者可以通过ContentResolver...
权限的解释:*修改SD / USB存储内容:能够将它复制到SD卡或USB存储和写入临时文件共享时的声音总上网查看网络状态:AdMob广告,匿名统计数据和获得的“最流行”列表*读取和写入联系人数据:可以为特定的联系人设置...
`contactsList`是这个列表的实例,而`addmap()`方法用于将新获取的联系人信息添加到这个列表中。 接下来,我们获取联系人信息的关键步骤是使用`ContentResolver`和`Cursor`。`ContentResolver`是Android系统用来...
4. **应用程序**:虽然主要关注的是系统组件,但源代码也包含了预装的一些基本应用,如联系人、日历、电话和设置应用。这对于学习如何构建遵循Android设计原则的应用非常有帮助。 5. **构建系统**: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 按照过滤条件查询通话...
3)通过邮件直接联系项目发起人反馈信息;4)加入QQ交流群实时反馈问题。这些方式不仅降低了参与的门槛,还充分利用了社区的力量,让整个项目能够持续地获得改善。 参与翻译的成员名单中,可以看到很多GitHub ID,...
通过上述代码示例,我们可以了解如何使用`ContentResolver`和`Cursor`来查询和获取联系人信息,以及如何正确地处理权限问题。这不仅有助于理解基本的Android编程概念,还能够帮助开发者实现更复杂的应用功能。
例如,如果应用需要访问用户的联系人信息,但在运行时未获取到相应的权限,可以调用`requestPermissions`来弹出权限请求对话框。`requestPermissions`接收两个参数:一个字符串数组,包含需要请求的权限;另一个是...
3. **解析联系人**:遍历Cursor,将每个联系人的信息转化为vCard对象。Android-vCard库提供了一个VCardBuilder类,可以帮助我们构建vCard实例: ```java VCardBuilder builder = new VCardBuilder(); while ...
Android 2.0/2.1 “爱曲奇/甜甜圈” - 发布时间:2009年10月/2010年1月 - 主要改进:增强了联系人管理功能,改善了浏览器和摄像头性能,支持多账户同步,并提高了整体稳定性。 ##### 3. Android 2.2 “冻酸奶” ...
- `android.permission.WRITE_CONTACTS`:允许应用修改用户的联系人信息。 同样地,在Android 6.0及更高版本中也需要进行动态权限请求。 ### 四、总结 通过对上述权限的详细介绍可以看出,在Android应用开发过程中...
在这样的背景下,开发基于Android系统的同学录应用显得尤为重要,它能够帮助用户高效地管理联系人信息,满足用户在社交、沟通中的需求。 1.2 研究现状 当前,市场上已经存在多种通讯录应用,如Google Contacts、...
联系人 355 9.2.2 使用ContentProvider管理 多媒体内容 360 9.3 实现ContentProvider 364 9.3.1 创建ContentProvider的步骤 364 9.4 监听ContentProvider的数据 改变 370 9.4.1 ContentObserver简介...