1:androidmanifest.xml的内容
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/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(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
- null,
- ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + contactId,
- null, null);
- int phoneIndex = 0;
- if(phones.getCount() > 0) {
- phoneIndex = phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
- }
- while(phones.moveToNext()) {
- String phoneNumber = phones.getString(phoneIndex);
- Log.i(TAG, phoneNumber);
- }
- /*
- * 查找该联系人的email信息
- */
- Cursor emails = this.getContext().getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
- null,
- ContactsContract.CommonDataKinds.Email.CONTACT_ID + "=" + contactId,
- null, null);
- int emailIndex = 0;
- if(emails.getCount() > 0) {
- emailIndex = emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA);
- }
- while(phones.moveToNext()) {
- String email = emails.getString(emailIndex);
- Log.i(TAG, email);
- }
- }
- }
3:目前手机中的联系人信息,有两个联系人的信息,如图所示,
这是Hellen的联系信息
这是Mike的联系信息
4:测试结果,在控制台输出的内容为:
可以看到在控制台输出了两个联系人的信息