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程序设计有所帮助。