我正在尝试使用以下代码插入/更新联系人照片:
public void ponerFoto()
{
byte[] bytes = obtenerFoto(mRutaFoto);
ContentValues values = new ContentValues();
int photoRow = -1;
String where = ContactsContract.Data.RAW_CONTACT_ID + " = " + mPersonId + " AND " + ContactsContract.Data.MIMETYPE + "=='" + ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE + "'";
Cursor cursor = mC.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, mPersonId);
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) {
mC.update(ContactsContract.Data.CONTENT_URI, values, ContactsContract.Data._ID + " = " + photoRow, null);
} else {
mC.insert(ContactsContract.Data.CONTENT_URI, values);
}
}
public byte[] obtenerFoto(String rutaFoto)
{
Bitmap bitmap = BitmapFactory.decodeFile(rutaFoto);
ByteArrayOutputStream blob = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.PNG, 0 /*ignored for PNG*/, blob);
byte[] bitmapdata = blob.toByteArray();
return bitmapdata;
}
在 SDK 模拟器中完美运行,但在我的带有 Android 2.3.4 的 LG P970 中发生了奇怪的事情: - 很多联系人没有添加图片没有更新 - 其他时候,而不是将照片添加到正确的联系人一个不同的。-从未失败。
是在手机上拥有多个帐户(Skype、Facebook、谷歌......)?
任何想法?
谢谢