获取/设置联系人头像

获取联系人头像  
 
public byte[] getPhoto(String
people_id) {
String photo_id = null;
String selection1 =
ContactsContract.Contacts._ID + " = " + people_id;
Cursor cur1 =
getContentResolver().query(
ContactsContract.Contacts.CONTENT_URI, null,
selection1, null,
null);
if (cur1.getCount() > 0)
{
cur1.moveToFirst();
photo_id =
cur1.getString(cur1
.getColumnIndex(ContactsContract.Contacts.PHOTO_ID));
//System.out.println("photo_id:"
+ photo_id);
}
String[] projection = new String[]
{
ContactsContract.Data.DATA15
};
String selection =
ContactsContract.Data._ID + " = " + photo_id;
Cursor cur =
getContentResolver().query(
ContactsContract.Data.CONTENT_URI, projection,
selection, null,
null);
cur.moveToFirst();
byte[] contactIcon =
cur.getBlob(0);
System.out.println("conTactIcon:" + contactIcon);
if
(contactIcon == null) {
return null;
} else {
return
contactIcon;
}
}
以下代码将字节数组转化成Bitmap对象,然后再ImageView中显示出来
private
ImageView image;
byte[] photo = getPhoto(contactId);
Bitmap map =
BitmapFactory.decodeByteArray(photo,
0,
photo.length);
image.setImageBitmap(map);

 

 

 

 

 

===============通过代码设置Android联系人的头像

 

 

 



private final
static boolean
OldSDK = (System.getSDKVersionNumber()< 5 )? true :
false ;

public static
void setPersonPhotoBytes(Context context, byte [] b,
long persionID,
boolean Sync)
{

if (OldSDK){

Uri myPerson = ContentUris.withAppendedId(People.CONTENT_URI,
persionID);

People.setPhotoData(context.getContentResolver(), myPerson,
b);

if (! Sync){

ContentValues values = new
ContentValues();

values.put( "_sync_dirty" , 0 );

context.getContentResolver().update(myPerson, values,
null , null );

}

}

else

setContactPhoto5(context.getContentResolver(), b, persionID,
Sync);

}

 

private
static void
setContactPhoto5(ContentResolver c, byte []
bytes,
long personId,
boolean Sync)
{

ContentValues values = new
ContentValues();

Uri u = Uri.parse( "content://com.android.contacts/data" );

int
photoRow = - 1 ;

String where = "raw_contact_id = " +
personId +
" AND mimetype
='vnd.android.cursor.item/photo'"
;

Cursor cursor = c.query(u, null , where,
null , null );

int
idIdx = cursor.getColumnIndexOrThrow( "_id" );

if (cursor.moveToFirst()) {

photoRow = cursor.getInt(idIdx);

}

cursor.close();

values.put( "raw_contact_id" ,
personId);

values.put( "is_super_primary" ,
1 );

values.put( "data15" ,
bytes);

values.put( "mimetype" , "vnd.android.cursor.item/photo" );

if (photoRow >= 0 ) {

c.update(u, values, " _id= " + photoRow,
null );

} else {

c.insert(u, values);

}

if (! Sync){

u = Uri.withAppendedPath(Uri.parse( "content://com.android.contacts/raw_contacts" ),
String.valueOf(personId));

values = new ContentValues();

values.put( "dirty" , 0 );

c.update(u, values, null , null );

}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值