1. 程式人生 > >獲取手機通訊錄的簡單實現

獲取手機通訊錄的簡單實現

直接上程式碼:

在AndroidManifest.xml 中新增許可權

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.palmv.getcontacts">
<!-- 讀取聯絡人許可權 -->
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<!-- 撥打電話許可權 -->
<uses-permission android:name="android.permission.CALL_PHONE"
/>

新增一個實體類:ContactEntity

package com.palmv.getcontacts;
import android.graphics.Bitmap;
/**
 * @author:chendd
* @date:2016/7/14
* @description:
*/
public class ContactEntity {
    /** 聯絡人名稱 **/
private String name;
/** 聯絡人號碼 **/
private String number;
/** 聯絡人頭像 **/
private Bitmap photo;
@Override
public String toString
() { return "ContactEntity{" + "name='" + name + '\'' + ", number='" + number + '\'' + ", photo=" + photo + '}'; } public ContactEntity(String name, String number, Bitmap photo) { this.name = name; this.number
= number; this.photo = photo; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } public Bitmap getPhoto() { return photo; } public void setPhoto(Bitmap photo) { this.photo = photo; } }

在activity中直接呼叫獲取通訊錄

package com.palmv.getcontacts;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import java.io.InputStream;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {

    @Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getPhoneContacts();
}
    /** 聯絡人名稱 **/
private ArrayList<ContactEntity> mContacts = new ArrayList<ContactEntity>();
    private static final String[] PHONES_PROJECTION = new String[] {
            ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone.PHOTO_ID,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID };
/** 聯絡人顯示名稱 **/
private static final int PHONES_DISPLAY_NAME_INDEX = 0;
/** 電話號碼 **/
private static final int PHONES_NUMBER_INDEX = 1;
/** 頭像ID **/
private static final int PHONES_PHOTO_ID_INDEX = 2;
/** 聯絡人的ID **/
private static final int PHONES_CONTACT_ID_INDEX = 3;
    private void getPhoneContacts() {
        ContentResolver resolver = getContentResolver();
        try {
            // 獲取手機聯絡人
Cursor phoneCursor = resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
PHONES_PROJECTION, null, null, null);
            if (phoneCursor != null) {
                while (phoneCursor.moveToNext()) {

                    // 得到手機號碼
String phoneNumber = phoneCursor
                            .getString(PHONES_NUMBER_INDEX);
// 當手機號碼為空的或者為空欄位 跳過當前迴圈
if (TextUtils.isEmpty(phoneNumber))
                        continue;
System.out.println("======================");
System.out.println("---手機號碼:"+phoneNumber);
// 得到聯絡人名稱
String contactName = phoneCursor
                            .getString(PHONES_DISPLAY_NAME_INDEX);
System.out.println("---聯絡人:"+contactName);
// 得到聯絡人ID
Long contactid = phoneCursor
                            .getLong(PHONES_CONTACT_ID_INDEX);
System.out.println("---聯絡人id:"+contactid);
// 得到聯絡人頭像ID
Long photoid = phoneCursor.getLong(PHONES_PHOTO_ID_INDEX);
System.out.println("---聯絡人頭像:"+photoid);
// 得到聯絡人頭像Bitamp
Bitmap contactPhoto = null;
// photoid 大於0 表示聯絡人有頭像 如果沒有給此人設定頭像則給他一個預設的
if (photoid > 0) {
                        Uri uri = ContentUris.withAppendedId(
                                ContactsContract.Contacts.CONTENT_URI,
contactid);
InputStream input = ContactsContract.Contacts
                                .openContactPhotoInputStream(resolver, uri);
contactPhoto = BitmapFactory.decodeStream(input);
System.err.println("---聯絡人有頭像:"+photoid);
} else {
                        contactPhoto = BitmapFactory.decodeResource(
                                getResources(), R.mipmap.ic_launcher);
}
                    ContactEntity mContact = new ContactEntity(contactName,
phoneNumber, contactPhoto);
mContacts.add(mContact);
}
                phoneCursor.close();
}
        } catch (Exception e) {
            e.printStackTrace();
}
    }
}

執行結果下圖: