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:测试结果,在控制台输出的内容为:

可以看到在控制台输出了两个联系人的信息

更多相关文章

  1. android代码中打开系统设置界面 .
  2. Android列表视图(ListView--SimpleCursorAdapter)学习
  3. Android中 LogCat 信息消失
  4. android2.3 api demo 学习系列(21)--App/Notification/Incoming Me
  5. 自定义Dialog之信息提示
  6. DICOM入门(四)——Android读取DCM文件图片
  7. Android(安卓)读取Bitmap的几种方式
  8. Android(安卓)Phonebook编写联系人UI加载及联系人保存流程(四)
  9. Android未接电话(未接电话个数,以及未接电话信息的读取)

随机推荐

  1. Android(安卓)Tangram模型:淘宝、天猫都在
  2. Android的活动介绍
  3. Android(安卓)如何自定义一个ContentProv
  4. Jetpack: ViewModelSavedState遇到的问题
  5. Android设置android:elevation无效?那是你
  6. [置顶] android 跨进程通信
  7. Android(安卓)-- IPC通信机制之一Binder
  8. react native极光推送全程教程android和i
  9. android 通用圆角控件
  10. 关于activity的退出