Android获取联系人头像的方法

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

时间: 2024-08-02 03:06:57

Android获取联系人头像的方法的相关文章

Android获取联系人头像的方法_Android

本文实例讲述了Android获取联系人头像的方法.分享给大家供大家参考,具体如下: public byte[] getPhoto(String people_id) { String photo_id = null; String selection1 = ContactsContract.Contacts._ID + " = " + people_id; Cursor cur1 = getContentResolver().query( ContactsContract.Contac

android获取联系人会有空号码数据

问题描述 android获取联系人会有空号码数据 现在在做通讯录功能,发现有些客户读到的通讯录会有为空的号码数据,请问这有可能是什么原因? 解决方案 android 联系人获取号码类型android 联系人获取号码类型Android如何获取系统联系人数据? 解决方案二: 可能是建立了联系人信息,保存联系人号码,后来又删掉了该联系人的号码,而在安卓通讯录的数据库里仍然有该电话号的ID存在,仍与联系人ContractID关联. 安卓在删除电话的时候,并不是从数据库里删除记录,而是ContractID

华为荣耀6怎么联系人头像?联系人头像设置方法

1)在手机中点击[联系人]然后找到好友进入之后我们再点击[编辑]图标.    2)然后在打开的[头像编辑]我们可以拍照也可以点击[从图库中选择照片]哦.    3)选择好照片,最后点击右上角的[√]即可.(如下图)    友情提示:智能手机只要把联系人存储在手机中才可以设置头像哦,如果存储在SIM卡中是无法设置联系人头像的哦.

android获取联系人示例分享_Android

复制代码 代码如下: package com.homer.phone; import java.util.ArrayList;import java.util.HashMap; import android.app.Activity;import android.database.Cursor;import android.os.Bundle;import android.provider.ContactsContract;import android.provider.ContactsCont

android获取联系人示例分享

复制代码 代码如下:package com.homer.phone; import java.util.ArrayList;import java.util.HashMap; import android.app.Activity;import android.database.Cursor;import android.os.Bundle;import android.provider.ContactsContract;import android.provider.ContactsContr

【android初级】之Android获取网页数据的方法总结

本文总结了三种获取网页数据的代码,是自己在用的时候随手整理出来的.此处仅贴出函数段,不贴出import了,用的时候可以用eclipse自动import一下就行了.函数的详细用途描述请看代码中注释.调用的时候请对应函数需要的参数. //第一种 /**获取参数(ArrayList<NameValuePair> nameValuePairs,String url)后post给远程服务器  * 将获得的返回结果(String)返回给调用者  * 本函数适用于查询数量较少的时候 */ public St

Android API开发之SMS短信服务处理和获取联系人的方法_Android

本文实例讲述了Android API开发之SMS短信服务处理和获取联系人的方法.分享给大家供大家参考,具体如下: Android API支持开发可以发送和接收SMS消息的应用程序.目前我们开发过程中使用的Android模拟器还不支持发送SMS,但它可以接收SMS.现在我们来探索一下Android对SMS的支持,我们将会构建一个小小的应用程序来监听移动设备(或模拟器)上接收到的SMS消息,并将它显示出来. 我们来定义一个Intent接收器来处理SMS接收事件: package com.wissen

Android手机卫士之获取联系人信息显示与回显_Android

前面的文章已经实现相关的布局,本文接着进行相关的功能实现 读取系统联系人当点击"选择联系人"按钮后,弹出联系人列表,读取系统联系人分如下几个步骤: 系统联系人提供了一个内容提供者,通过内容解析器,匹配Url地址 1.内容解析器 2.Url地址,查看系统联系人数据库,内容提供者源码 先看api文档的清单文件,后看java类(联系人数据库有多张表) contents://com.android.contacts/表名 3.系统联系人数据库中核心表的表结构 raw_contacts 联系人表

Android获取手机联系人信息_Android

Android如何获取手机联系人信息,本文为大家揭晓. 获取手机联系人信息步骤: 1.获取 ContentResolver ContentResolver resolver = getContentResolver(); 2.resolver.query(*)查询信息 查询手机联系人的URI:ContactsContract.RawContacts.CONTENT_URI 查询手机联系人手机号的URI:ContactsContract.CommonDataKinds.Phone.CONTENT_