通过代码设置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 );
         }
     }
   

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值