`
zengyan2012
  • 浏览: 409905 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
阅读更多

 

//设置头像(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/

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics