//设置头像(Android SDK 1.6以后联系人格式进行的升级,以下为设置联系人头像的代码,兼容目前所有SDK)
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);
}
}
---------------------------------------------------------------------------------------
//获取头像
private final static boolean OldSDK = (System.getSDKVersionNumber()< 5 )? true : false;
public static Bitmap getContactPhoto(Context context, long pid,int defaultIco){
if (OldSDK){
Uri uri = ContentUris.withAppendedId(People.CONTENT_URI, pid);
return People.loadContactPhoto(context, uri,defaultIco, null);
}
else
return getContactPhoto5(context, pid, defaultIco);
}
private static Bitmap getContactPhoto5(Context c, long personId,int defaultIco){
byte[] data = new byte[0];
Uri u = Uri.parse("content://com.android.contacts/data");// AND (is_super_primary =1 or is_primary=1)
String where ="raw_contact_id = " + personId + " AND mimetype ='vnd.android.cursor.item/photo'";
Cursor cursor = c.getContentResolver().query(u, null, where, null, null);
if (cursor.moveToFirst()) {
data = cursor.getBlob(cursor.getColumnIndex("data15"));
}
cursor.close();
if (data ==null ||data.length == 0){
return BitmapFactory.decodeResource(c.getResources(), defaultIco);
}
else
return BitmapFactory.decodeByteArray(data, 0, data.length);
}
-------------------------------------------------------------------------------------------------------------------
//修改 (SDK--->2.1)
public static void setContactPhoto(ContentResolver c, byte[] bytes,
long personId) {
ContentValues values = new ContentValues();
int photoRow = -1;
String where = ContactsContract.Data.RAW_CONTACT_ID + " = " + personId
+ " AND " + ContactsContract.Data.MIMETYPE + "=='"
+ ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE
+ "'";
Cursor cursor = c.query(ContactsContract.Data.CONTENT_URI, null, where,
null, null);
int idIdx = cursor.getColumnIndexOrThrow(ContactsContract.Data._ID);
if (cursor.moveToFirst()) {
photoRow = cursor.getInt(idIdx);
}
cursor.close();
values.put(ContactsContract.Data.RAW_CONTACT_ID, personId);
values.put(ContactsContract.Data.IS_SUPER_PRIMARY, 1);
values.put(ContactsContract.CommonDataKinds.Photo.PHOTO, bytes);
values.put(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE);
if (photoRow >= 0) {
c.update(ContactsContract.Data.CONTENT_URI, values,
ContactsContract.Data._ID + " = " + photoRow, null);
} else {
c.insert(ContactsContract.Data.CONTENT_URI, values);
}
}
转自:http://blog.smalldemon.org/
分享到:
相关推荐
基于android的自定义联系人头像通讯录,可以选择头像。程序对外提供了一个URI接口,方便其他程序,比如防火墙访问通讯录中数据。参考了《Android应用开发揭秘》一书,在此感谢杨丰盛作者。
Android高仿微信头像裁剪
主要介绍了Android获取联系人头像的方法,结合实例形式分析了Android调用联系人头像的相关操作技巧,涉及Bitmap对象及ImageView的使用方法,需要的朋友可以参考下
获取本地联系人的头像并显示,博客:http://blog.csdn.net/baidu_nod/article/details/38655005
通过contentprovider提供的uri查询手机电话簿的联系人信息,包括姓名,电话,头像(获取的是本机保存的联系人信息,没有获取SIM卡里面联系人的信息)
实现滑动选择年龄,圆形头像,对联系人的增删改基本操作,UI效果不错,欢迎下载
在做电话本或者其他应用时,显示联系人头像的策略一般是这样的:先判断是否有头像图片,如果有,则直接显示图片;如果没有,则显示联系人的名字的第一个字,将这个文字作为头像,并添加背景颜色。如果设置的文字的...
在日常Android手机的使用过程中,根据电话号码获得联系人头像,是经常会碰到的问题。本文即以实例形式讲述了Android根据电话号码获得联系人头像是实现代码。分享给大家供大家参考之用。具体方法如下: 首先,通过...
我软件用Android写的,实现了本地联系人基本信息以及头像的读取,联系人头像的修改,联系人的增删改查功能的实现,以及联系人的批量删除.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行...
本应用是我给一个小公司开发的一个联系人读取应用,主要实现的功能是,联系人头像联系方式的存储读取,数据的同步后台使用了一个小服务器,把所有的联系信息以jeson的方式读取到一个页面里面,最后前端android通过...
下滑头像变大上滑头像变小及隐藏 希望对大家有帮助
输入联系人的基本信息,并可根据用户需求增加个性化信息如头像、姓名、手机号码、办室电话、家庭电话、职务职称、单位名称、地址、邮政编码、Email、其他联系方式、备注这些信息,击确认返回主界面。点击通信录中一...
Android---获取手机联系人
获取联系人,短息 ,选择头像上传的通讯录
查看并获取联系人电话
Android根据电话号码获得联系人头像,联系人名字,电话等实现代码
安卓客户端链接服务器读取联系人信息,包含姓名、电话、头像
ListView实现A-Z字母排序和过滤搜索功能并且实现汉字转成拼音的功能,获取通讯录联系人和头像