天堂向右,我依然向左

天下之大,虽离家千里,何处不可往!何事不可为!
生活之路,纵坎坷曲折,当奋斗不息,则精彩纷呈!

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::
获取联系人头像  

 

 

 

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();


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);

}

}

 

 
posted on 2011-08-29 20:54  老舟  阅读(301)  评论(0)    收藏  举报