欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android获取联系人头像的方法

程序员文章站 2024-03-06 15:59:32
本文实例讲述了android获取联系人头像的方法。分享给大家供大家参考,具体如下: public byte[] getphoto(string people_id...

本文实例讲述了android获取联系人头像的方法。分享给大家供大家参考,具体如下:

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

更多关于android相关内容感兴趣的读者可查看本站专题:《android开发入门与进阶教程》、《android视图view技巧总结》、《android编程之activity操作技巧总结》、《android操作sqlite数据库技巧总结》、《android操作json格式数据技巧总结》、《android数据库操作技巧总结》、《android文件操作技巧汇总》、《android编程开发之sd卡操作方法汇总》、《android资源操作技巧汇总》及《android控件用法总结

希望本文所述对大家android程序设计有所帮助。