Android開發之獲取聯繫人信息

對於手機來說,聯繫人分兩類:sim卡聯繫人和手機內置聯繫人。一般來說,sim卡聯繫人不帶有更多信息(如通訊地址、頭像等),但是手機內置聯繫人可以獲取更多信息。這些信息基本上都會綁定手機賬戶,方便手機用戶找回丟失的數據。下面是獲取聯繫人信息的辦法:

java文件代碼(部分):

/** 獲取庫Phon表字段 **/

private static final String[] PHONES_PROJECTION = new String[] {

Phone.DISPLAY_NAME, Phone.NUMBER, Photo.PHOTO_ID, 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 ArrayList<String> mContactsName = new ArrayList<String>();


public ArrayList<String> getmContactsName() {

return mContactsName;

}


public void setmContactsName(ArrayList<String> mContactsName) {

this.mContactsName = mContactsName;

}


public ArrayList<String> getmContactsNumber() {

return mContactsNumber;

}


public void setmContactsNumber(ArrayList<String> mContactsNumber) {

this.mContactsNumber = mContactsNumber;

}


/** 聯繫人頭像 **/

private ArrayList<String> mContactsNumber = new ArrayList<String>();


/** 聯繫人頭像 **/

private ArrayList<Bitmap> mContactsPhonto = new ArrayList<Bitmap>();


/** 得到手機通訊錄聯繫人信息 **/

public void getPhoneContacts() {


ContentResolver resolver = context.getContentResolver();


// 獲取手機聯繫人

Cursor phoneCursor = resolver.query(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;


// 得到聯繫人名稱

String contactName = phoneCursor

.getString(PHONES_DISPLAY_NAME_INDEX);


// // 得到聯繫人ID

// Long contactid =

// phoneCursor.getLong(PHONES_CONTACT_ID_INDEX);

//

// // 得到聯繫人頭像ID

// Long photoid = phoneCursor.getLong(PHONES_PHOTO_ID_INDEX);

//

// // 得到聯繫人頭像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);

// } else {

// contactPhoto = BitmapFactory.decodeResource(

// m.getResources(), R.drawable.contact_photo);

// }


mContactsName.add(contactName);

mContactsNumber.add(phoneNumber);

}


phoneCursor.close();

}

}


/** 得到手機SIM卡聯繫人人信息 **/

public void getSIMContacts() {


ContentResolver resolver = context.getContentResolver();

// 獲取Sims卡聯繫人

Uri uri = Uri.parse("content://icc/adn");

Cursor phoneCursor = resolver.query(uri, PHONES_PROJECTION, null, null,

null);


if (phoneCursor != null) {

while (phoneCursor.moveToNext()) {


// 得到手機號碼

String phoneNumber = phoneCursor.getString(PHONES_NUMBER_INDEX);

// 當手機號碼爲空的或者爲空字段 跳過當前循環

if (TextUtils.isEmpty(phoneNumber))

continue;

// 得到聯繫人名稱

String contactName = phoneCursor

.getString(PHONES_DISPLAY_NAME_INDEX);


// Sim卡中沒有聯繫人頭像


mContactsName.add(contactName);

mContactsNumber.add(phoneNumber);

}


phoneCursor.close();

}

}

需要在MainFest.xml文件中申請的權限:

<uses-permission android:name="android.permission.READ_CONTACTS" /> <!-- 讀取聯繫人所需要的權限 -->

大功告成!

個人辛勤勞動成果,如有轉載,請註明出處,謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章