今天讲讲我这2天在研究的问题,2.0以上操作联系人的信息,跟1.5是有区别的,我查了很多资料,总结了下,见代码将吧。
首先是查询联系人基本信息,2.0查询的联系人信息URI为ContactsContract.Contacts.CONTENT_URI。
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
null, null, null, null);
if (cur.getCount() > 0) {
while (cur.moveToNext()) {
String id = cur.getString(
cur.getColumnIndex(ContactsContract.Contacts._ID));//联系人ID
String name = cur.getString(
cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));//联系人名字
if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
//号码查询(相关API:http://androidappdocs.appspot.com/reference/android/provider/ContactsContract.CommonDataKinds.Phone.html)
// 判断是否有联系人号码 ContactsContract.Contacts.HAS_PHONE_NUMBER=1为至少有一个,0为没有,接下去就可以决定是否查询号码啦。
Cursor pCur = cr.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?",
new String[]{id}, null);
while (pCur.moveToNext()) {
// 做些操作
String phoneNumber= phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
}
pCur.close();
}
}
}
//Email查询(相关API:http://androidappdocs.appspot.com/reference/android/provider/ContactsContract.CommonDataKinds.Email.html)
Cursor emailCur = cr.query(
ContactsContract.CommonDataKinds.Email.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",
new String[]{id}, null);
while (emailCur.moveToNext()) {
// 邮箱
String email = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
// 邮箱类型(HOME,WORK,OTHOR.CUSTOM,MOBILE)
String emailType = emailCur.getString(
emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));
}
emailCur.close();
//Note查询(相关API:http://androidappdocs.appspot.com/reference/android/provider/ContactsContract.CommonDataKinds.Note.html)
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();
//邮政地址查询(相关API:http://androidappdocs.appspot.com/reference/android/provider/ContactsContract.CommonDataKinds.StructuredPostal.html)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, where, whereParameters, 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 state = 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();
//IM查询(相关API:http://androidappdocs.appspot.com/reference/android/provider/ContactsContract.CommonDataKinds.Im.html)
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;
imType = imCur.getString(
imCur.getColumnIndex(ContactsContract.CommonDataKinds.Im.TYPE));
}
imCur.close();
//组织查询(相关API:http://androidappdocs.appspot.com/reference/android/provider/ContactsContract.CommonDataKinds.Organization.html)
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();
转载http://www.cmd100.com/bbs/thread-1204-1-1.html
分享到:
相关推荐
在Android平台上,获取通讯录中的联系人信息是常见的功能需求,尤其当需要处理与电子邮件相关的应用时。这个DEMO展示了如何有效地读取那些在联系人信息中设置了电子邮件地址的联系人。下面我们将深入探讨实现这一...
此外,源码可能还包括处理联系人分组、获取联系人电话号码、电子邮件等细节。例如,获取某个联系人的电话号码,你可以这样做: ```java String contactId = ...; // 获取到的联系人ID Cursor phones = resolver....
在Android平台上,获取手机联系人是一项常见的功能,它允许应用访问设备上的通讯录信息,比如姓名、电话号码、电子邮件地址等。以下是一个关于如何在Android中实现这一功能的详细讲解。 首先,为了获取手机联系人,...
`DISPLAY_NAME`字段用于获取联系人姓名,`PHONE_NUMBER`字段用于获取电话号码。根据实际需求,你还可以添加更多字段,如电子邮件地址、生日等。 最后,我们将这些联系人信息显示在一个ListView或者其他UI组件上,...
以上代码展示了如何获取所有联系人及其电话号码和电子邮件。但实际应用中,可能还需要处理更多细节,如分页加载、异步处理、权限检查等。此外,Android 6.0(API级别23)及以上版本,还需要在运行时动态请求权限。 ...
如果你想获取更详细的信息,如电话号码、电子邮件地址等,你可以查询其他列,例如`ContactsContract.CommonDataKinds.Phone.NUMBER`和`ContactsContract.CommonDataKinds.Email.ADDRESS`。 总结一下,Android获取...
- 使用Cursor的moveToFirst(), moveToNext()等方法遍历结果,获取每条联系人的数据,如`cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))`获取电话号码,`cursor....
例如,你可以用`ContactsContract.Contacts.CONTENT_URI`查询所有联系人,然后通过联系人的ID查询其电话号码、电子邮件等详细信息。这里也需要请求`READ_CONTACTS`权限。 至于JUnit测试,它是Java的一个单元测试...
接着,你可以遍历Cursor对象,获取每个联系人的详细信息,如姓名、电话号码、电子邮件等: ```java while (cursor.moveToNext()) { String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract....
它基于VCard格式,VCard是一种用于存储个人联系信息的国际标准,如姓名、电话号码、电子邮件地址等。在Android系统中,我们可以使用BluetoothAdapter和BluetoothProfile接口来实现与支持PBAP的蓝牙设备的连接。 ...
在Android平台上,获取联系人信息是一项常见的功能,它允许应用程序访问用户的电话簿,展示联系人的姓名、电话号码、电子邮件地址等。本节将详细讲解如何在Android应用中读取联系人信息,以及与之相关的`firstname`...
`ContactsContract.CommonDataKinds.Phone.CONTENT_URI`是获取电话数据的URI,`DISPLAY_NAME`和`NUMBER`是对应的列名。 除了基本的姓名和电话,我们还可以获取更多的联系人信息,如邮箱、生日等。例如,要获取联系...
本知识点将详细介绍如何在Android应用中读取手机通讯录的所有字段,包括但不限于姓名、手机号、电话号码、公司电话、邮件地址等。 #### 二、关键API介绍 为了读取通讯录信息,Android提供了一系列的API接口,主要...
以上就是Android获取通讯录的基本步骤。在实际项目中,可能还需要处理更复杂的需求,如同步联系人、添加或修改联系人、处理权限变化等。这个"Android 获取通讯录程序源码"应该包含了这些功能的实现,通过学习和分析...
// 获取电话号码 String phoneNumber = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); contact.setPhoneNumber(phoneNumber); // 获取电子邮件 Cursor ...
`TelephonyManager`是应用程序与电话功能交互的主要API,可以获取SIM状态、网络类型、来电号码等信息。而`ITelephony`是系统内部的接口,提供更底层的电话控制,如接听、挂断电话。 2. **电话状态监听(Phone State...
在PhoneGap应用中,开发者可能使用了PhoneGap的插件机制,创建了一个自定义插件来调用Android的Contacts Provider API,从而获取和更新联系人信息。 用户可以通过关键词搜索联系人,这通常涉及到在前端使用...