Android联系人头像存储有关问题

Android联系人头像存储问题
求大神指点:
当本机有头像时,可以存储成功,也就是第一个方法;但是,当本机无头像时,却存储不成功,虽然不报错,但是没有存储进去。
 private void updateOrInsertPhoto(Long rawContactId, byte[] photo) {
                if (contact.getIcon() != null) {
                        ContentValues values = new ContentValues();
                        values.put(Photo.PHOTO, photo);

                        String selection = Data.RAW_CONTACT_ID + "=? and " + Data.MIMETYPE
                                        + "=?";
                        String[] selectionArgs = new String[] {
                                        Long.toString(rawContactId), Photo.CONTENT_ITEM_TYPE };

                        getContentResolver().update(Data.CONTENT_URI, values, selection,
                                        selectionArgs);
                } else {
                        ContentValues values = new ContentValues();
                        values.put(Data.RAW_CONTACT_ID, rawContactId);
                        values.put(Data.MIMETYPE, Photo.CONTENT_ITEM_TYPE);
                        values.put(Photo.PHOTO, photo);

                        getContentResolver().insert(Data.CONTENT_URI, values);
                }
        }

------解决思路----------------------

public static final String[] VCARD_PROP = new String[] { "name", "position", "company", "mobile", "phone", "fax", "email", "address", "url" };

/**
 * 增加联系人, 姓名不能为空
 * 
 * @param card
 * @return long
 * @throws Exception
 */
public long write(Card card, Context context) throws Exception {
if (null == card 
------解决思路----------------------
 tool.isBlank(card.getName())) {
return 0;
}
ContentResolver resolver = context.getContentResolver();
ContentValues values = new ContentValues();
// 首先向RawContacts.CONTENT_URI执行一个空值插入,目的是获取系统返回的rawContactId
Uri uri = resolver.insert(RawContacts.CONTENT_URI, values);
long id = ContentUris.parseId(uri);
values.clear();// 往data表入姓名数据
values.put(Data.RAW_CONTACT_ID, id);
values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
values.put(StructuredName.GIVEN_NAME, card.getName());
resolver.insert(android.provider.ContactsContract.Data.CONTENT_URI, values);
values.clear();// 添加用户名 职位 部门
values.put(android.provider.ContactsContract.Contacts.Data.RAW_CONTACT_ID, id);
values.put(Data.MIMETYPE, Organization.CONTENT_ITEM_TYPE);
values.put(Organization.LABEL, card.getLabel());
values.put(Organization.TITLE, card.getPosition());
values.put(Organization.COMPANY, card.getCompany());
values.put(Organization.TYPE, Organization.TYPE_WORK);
resolver.insert(android.provider.ContactsContract.Data.CONTENT_URI, values);
values.clear();// 添加邮箱
values.put(android.provider.ContactsContract.Contacts.Data.RAW_CONTACT_ID, id);
values.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);
values.put(Email.DATA, card.getEmail());
values.put(Email.TYPE, Email.TYPE_WORK);
resolver.insert(android.provider.ContactsContract.Data.CONTENT_URI, values);
values.clear();// 添加手机
values.put(android.provider.ContactsContract.Contacts.Data.RAW_CONTACT_ID, id);
values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
values.put(Phone.NUMBER, card.getMobile());
values.put(Phone.TYPE, Phone.TYPE_WORK_MOBILE);
resolver.insert(android.provider.ContactsContract.Data.CONTENT_URI, values);
values.clear();// 添加固定电话
values.put(android.provider.ContactsContract.Contacts.Data.RAW_CONTACT_ID, id);
values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
values.put(Phone.NUMBER, card.getPhone());
values.put(Phone.TYPE, Phone.TYPE_WORK);
resolver.insert(android.provider.ContactsContract.Data.CONTENT_URI, values);
values.clear();// 添加传真
values.put(android.provider.ContactsContract.Contacts.Data.RAW_CONTACT_ID, id);
values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
values.put(Phone.NUMBER, card.getFax());
values.put(Phone.TYPE, Phone.TYPE_FAX_WORK);
resolver.insert(android.provider.ContactsContract.Data.CONTENT_URI, values);
values.clear();// 添加地址 邮编
values.put(android.provider.ContactsContract.Contacts.Data.RAW_CONTACT_ID, id);
values.put(Data.MIMETYPE, StructuredPostal.CONTENT_ITEM_TYPE);
values.put(StructuredPostal.FORMATTED_ADDRESS, card.getAddress());
values.put(StructuredPostal.POSTCODE, card.getPost());
values.put(StructuredPostal.TYPE, StructuredPostal.TYPE_WORK);
resolver.insert(android.provider.ContactsContract.Data.CONTENT_URI, values);
values.clear();// 个人网站
values.put(android.provider.ContactsContract.Contacts.Data.RAW_CONTACT_ID, id);
values.put(Data.MIMETYPE, Website.CONTENT_ITEM_TYPE);
values.put(Website.DATA, card.getUrl());
values.put(Website.TYPE, Website.TYPE_WORK);
resolver.insert(android.provider.ContactsContract.Data.CONTENT_URI, values);
if (null != card.getBitmap()) {
values.clear();// 添加头像
values.put(android.provider.ContactsContract.Contacts.Data.RAW_CONTACT_ID, id);
values.put(Data.MIMETYPE, Photo.CONTENT_ITEM_TYPE);
ByteArrayOutputStream array = new ByteArrayOutputStream();
card.getBitmap().compress(Bitmap.CompressFormat.JPEG, 100, array);
values.put(Photo.PHOTO, array.toByteArray());
resolver.insert(android.provider.ContactsContract.Data.CONTENT_URI, values);
}
return id;
}


联系人中一般只保存这个10个字段,你把代码拿去,建一个Card实体类
再加入权限:
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
如果还不行,我就真的帮不了你了