android开发怎样获取通讯录联系人信息

2024-12-04 23:14:06
推荐回答(2个)
回答(1):

/**得到手机通讯录联系人信息**/
private void getPhoneContacts() {
ContentResolver resolver = mContext.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(getResources(), R.drawable.contact_photo);
}

mContactsName.add(contactName);
mContactsNumber.add(phoneNumber);
mContactsPhonto.add(contactPhoto);
}

phoneCursor.close();
}
}

回答(2):

android开发获取通讯录联系人信息,主要是通过ContentResolver
类提供的api,访问手机数据库中的联系人表,代表如下:

private void getPhoneContacts() {    
     ContentResolver resolver = this.getContentResolver();    
         
     // 获取手机联系人    
    Cursor phoneCursor = resolver.query(Phone.CONTENT_URI,  
                 new String[] { Phone.CONTACT_ID, Phone.DISPLAY_NAME,  
                         Phone.NUMBER },  
                 Phone.DISPLAY_NAME + "=?" + " AND " + Phone.TYPE + "='"  
                         + Phone.TYPE_MOBILE + "'", new String[] { name }, null);  
     if (phoneCursor != null) {  
         while (phoneCursor.moveToNext()) {  
             String number = phoneCursor.getString(2);  
                     // 当手机号码为空的或者为空字段 跳过当前循环    
                     if (TextUtils.isEmpty(phoneNumber))    
                         continue;  
             // 得到联系人名称                
             String username = phoneCursor.getString(1);  
             mContactsName.add(contactName);    
                 mContactsNumber.add(phoneNumber);  
   
         }  
         phoneCursor.close();  
     }   
 }

android各种联系人信息、短信息、权限列表等都会记录在数据库里面,使用时,只要使用ContentResolver 进行访问就可以了。