本文实例讲述了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);}}elsesetContactPhoto5(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程序设计有所帮助。

更多相关文章

  1. Android基于自带的DownloadManager实现下载功能示例
  2. android使用技巧
  3. [Android]ListView小技巧
  4. Android中查找联系人常用的URI
  5. android 系统定制的小技巧
  6. Android进阶——使用Pull解析和生成轻量级数据XML
  7. Android 绘图进阶(四):自定义View属性(灰常重要)
  8. Android进阶之_实现滑动的7种方式详解
  9. Android软件开发之获取通讯录联系人信息(二十九)

随机推荐

  1. Android的adb命令 查看sqlite命令
  2. android BufferedOutputStream的使用
  3. 第二部分 MediaPlayer的概述
  4. Android Studio ——Android 使用Pull方
  5. android调用web service(cxf)实例
  6. android二维图形翻转效果
  7. SwipeRefreshLayout——Android最棒的下
  8. Android DNS之getaddrinfo()的实现
  9. 从MediaStore获取制定文件夹下的视频信息
  10. Android(安卓)Tween动画之RotateAnimatio