Android 更新联系人头像失败问题
2016-09-22 18:52
295 查看
在自己去实现更新联系人头像是经常遇到更新联系人头像失败的问题
现象:联系人头像字段若已经存储头像数据可以正常更新,若当前修改的联系人头像不存在,则会出现更新失败的情况;
原因:当联系人已经存在联系人头像时,存储联系人头像二进制字段已经占位,即表示数据库中已经存在该条记录,
我们只需要调用getContentResolver().update()方法更新头像,若联系人头像不存在,用户新增头像需要调用
现象:联系人头像字段若已经存储头像数据可以正常更新,若当前修改的联系人头像不存在,则会出现更新失败的情况;
原因:当联系人已经存在联系人头像时,存储联系人头像二进制字段已经占位,即表示数据库中已经存在该条记录,
我们只需要调用getContentResolver().update()方法更新头像,若联系人头像不存在,用户新增头像需要调用
getContentResolver().insert方法插入头像; 实例参考代码:
String phoneWhere = ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + contactId; Cursor phoneCursor = mView.getCtx().getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, phoneWhere , null, null); if(phoneCursor.moveToNext()){ Long photoId = phoneCursor.getLong(phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.PHOTO_ID)); if(bm != null){ ByteArrayOutputStream baos = new ByteArrayOutputStream(); bm.compress(Bitmap.CompressFormat.PNG, 100, baos); byte[] data = baos.toByteArray(); //更新 if(photoId > 0){ values.clear(); values.put(ContactsContract.CommonDataKinds.Photo.PHOTO, data); // values.put(ContactsContract.Contacts.Data.MIMETYPE, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE); String wherebm = ContactsContract.Data.RAW_CONTACT_ID + "=? AND " + ContactsContract.Data.MIMETYPE + "=? "; //rawContactsId -> contactId String[] selectionArgsbm = new String[]{rawContactsId, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE}; int id = mView.getCtx().getContentResolver().update(ContactsContract.Data.CONTENT_URI, values, wherebm, selectionArgsbm); }else{ //插入 //保存联系人头像 values.clear(); values.put(ContactsContract.Contacts.Data.RAW_CONTACT_ID, rawContactsId); values.put(ContactsContract.CommonDataKinds.Photo.PHOTO, data); values.put(ContactsContract.Contacts.Data.MIMETYPE, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE); mView.getCtx().getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values); } } }
相关文章推荐
- Android 更新联系人头像失败问题
- Android 更新联系人头像失败问题
- android之apk自动更新解析包失败问题
- 解决android sdk manager更新失败与更新慢的问题
- Android问题】解决 Android SDK下载和更新失败“Connection to https://dl-ssl.google.com refused...
- Android 版本更新下载自动安装APK,并解决Android6.0安装失败的问题
- 【Android问题】解决 Android SDK下载和更新失败“Connection to https://dl-ssl.google.com refused”的问题
- AndroidSDK requires Android Developer和android sdk更新失败的问题
- 【Android】两步搞定AndroidSDKManager在线更新SDK版本失败问题
- Android Project from Existing Code 生成 R 文件错误、失败等问题解决办法 - 持续更新
- 【Android问题】解决 Android SDK下载和更新失败“Connection to https://dl-ssl.google.com refused”的问题
- 解决android sdk manager更新失败问题
- android之apk自动更新解析包失败问题
- 解决android sdk manager更新失败问题
- 解决Android SDK Manager更新失败或更新速度慢的问题
- 【Android问题】解决 Android SDK下载和更新失败“Connection to https://dl-ssl.google.com refused”的问题