在android中读取联系人信息的程序,包括读取联系人姓名、手机号码和邮箱
(转载自博客:/error404/archive//03/12/2956090.html)
1:androidmanifest.xml的内容
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="/apk/res/android"package="cn.itcast.contacts"android:versionCode="1"android:versionName="1.0"><application android:icon="@drawable/icon" android:label="@string/app_name"><uses-library android:name="android.test.runner" /><activity android:name=".MainActivity"android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application><uses-sdk android:minSdkVersion="8" /><uses-permission android:name="android.permission.READ_CONTACTS" /><uses-permission android:name="android.permission.WRITE_CONTACTS" /><instrumentation android:name="android.test.InstrumentationTestRunner"android:targetPackage="cn.itcast.contacts" android:label="Tests for My App" /></manifest>
里面重要的是搭建测试环境和添加<uses-permission>,即读取和写入联系人信息的权限
2:读取的主要方法
/** 读取联系人的信息*/public void testReadAllContacts() {Cursor cursor = this.getContext().getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);int contactIdIndex = 0;int nameIndex = 0;if(cursor.getCount() > 0) {contactIdIndex = cursor.getColumnIndex(ContactsContract.Contacts._ID);nameIndex = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);}while(cursor.moveToNext()) {String contactId = cursor.getString(contactIdIndex);String name = cursor.getString(nameIndex);Log.i(TAG, contactId);Log.i(TAG, name);/** 查找该联系人的phone信息*/Cursor phones = this.getContext().getContentResolver().query(monDataKinds.Phone.CONTENT_URI, null, monDataKinds.Phone.CONTACT_ID + "=" + contactId, null, null);int phoneIndex = 0;if(phones.getCount() > 0) {phoneIndex = phones.getColumnIndex(monDataKinds.Phone.NUMBER);}while(phones.moveToNext()) {String phoneNumber = phones.getString(phoneIndex);Log.i(TAG, phoneNumber);}/** 查找该联系人的email信息*/Cursor emails = this.getContext().getContentResolver().query(monDataKinds.Email.CONTENT_URI, null, monDataKinds.Email.CONTACT_ID + "=" + contactId, null, null);int emailIndex = 0;if(emails.getCount() > 0) {emailIndex = emails.getColumnIndex(monDataKinds.Email.DATA);}while(emails.moveToNext()) {String email = emails.getString(emailIndex);Log.i(TAG, email);}}}
3:目前手机中的联系人信息,有两个联系人的信息,如图所示,
这是Hellen的联系信息
这是Mike的联系信息
4:测试结果,在控制台输出的内容为:
可以看到在控制台输出了两个联系人的信息。
//--------------------------------------
获取所有分组编号和组的名称
Cursor groupInfoCursor = getContentResolver().query(ContactsContract.Groups.CONTENT_URI, null, null, null, null);while(groupInfoCursor.moveToNext()) {int idIndex = groupInfoCursor.getColumnIndex(ContactsContract.Groups._ID);int titleIndex = groupInfoCursor.getColumnIndex(ContactsContract.Groups.TITLE);String id = groupInfoCursor.getString(idIndex);String title = groupInfoCursor.getString(titleIndex);}groupInfoCursor.close();