获取联系人头像
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);
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
);
}
}