Android获取联系人头像的方法
本文实例讲述了Android获取联系人头像的方法。分享给大家供大家参考,具体如下:
publicbyte[]getPhoto(Stringpeople_id){
Stringphoto_id=null;
Stringselection1=ContactsContract.Contacts._ID+"="+people_id;
Cursorcur1=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=newString[]
{
ContactsContract.Data.DATA15
};
Stringselection=ContactsContract.Data._ID+"="+photo_id;
Cursorcur=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){
returnnull;
}else{
returncontactIcon;
}
}
以下代码将字节数组转化成Bitmap对象,然后再ImageView中显示出来
privateImageViewimage; byte[]photo=getPhoto(contactId); Bitmapmap=BitmapFactory.decodeByteArray(photo,0,photo.length); image.setImageBitmap(map);
通过代码设置Android联系人的头像:
privatefinalstaticbooleanOldSDK=(System.getSDKVersionNumber()<5)?true:false;
publicstaticvoidsetPersonPhotoBytes(Contextcontext,byte[]b,longpersionID,booleanSync)
{
if(OldSDK){
UrimyPerson=ContentUris.withAppendedId(People.CONTENT_URI,persionID);
People.setPhotoData(context.getContentResolver(),myPerson,b);
if(!Sync){
ContentValuesvalues=newContentValues();
values.put("_sync_dirty",0);
context.getContentResolver().update(myPerson,values,null,null);
}
}
else
setContactPhoto5(context.getContentResolver(),b,persionID,Sync);
}
privatestaticvoidsetContactPhoto5(ContentResolverc,byte[]bytes,longpersonId,booleanSync)
{
ContentValuesvalues=newContentValues();
Uriu=Uri.parse("content://com.android.contacts/data");
intphotoRow=-1;
Stringwhere="raw_contact_id="+personId+"ANDmimetype='vnd.android.cursor.item/photo'";
Cursorcursor=c.query(u,null,where,null,null);
intidIdx=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=newContentValues();
values.put("dirty",0);
c.update(u,values,null,null);
}
}
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android视图View技巧总结》、《Android编程之activity操作技巧总结》、《Android操作SQLite数据库技巧总结》、《Android操作json格式数据技巧总结》、《Android数据库操作技巧总结》、《Android文件操作技巧汇总》、《Android编程开发之SD卡操作方法汇总》、《Android资源操作技巧汇总》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。