Android:插入/更新联系人照片。奇怪的东西

时间:2012-10-02 10:39:50

标签: android image contacts

我正在尝试使用以下代码插入/更新联系人照片:

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模拟器中工作得很好,但在我的LG P970与Android 2.3.4中发生了奇怪的事情: - 很多联系人没有添加图片没有更新 - 其他时候,不是将照片放到正确的联系人,而是添加到另一个。 - 不要失败。

要在手机上拥有多个帐户(Skype,Facebook,Google ...)?

有什么想法吗?

感谢

0 个答案:

没有答案