Skip to content Skip to sidebar Skip to footer

How To Programmatically Assign A Picture (bitmap) To A Contact?

I have a variable of type Bitmap and I would like to assign it to a Contact from my contact list as the CalledID picture, how would I do that?

Solution 1:

You have to creat your own mime type for those.

Here is an example that saves a boolean as my custom mime type to the contacts. It uses the latest SDK 2.1

Important

This example uses DATA1 for data, DATA1 is indexed but it's not recomended for binary data. In your case to store binary data such as Picture you have to use DATA15.

By convention, DATA15 is used for storing BLOBs (binary data).

public static final String MIMETYPE_FORMALITY = "vnd.android.cursor.item/useformality";
public clsMyClass saveFormality() {
        try {
            ContentValues values = new ContentValues();
            values.put(Data.DATA1, this.getFormality() ? "1" : "0");
            int mod = ctx.getContentResolver().update(
                    Data.CONTENT_URI,
                    values,
                    Data.CONTACT_ID + "=" + this.getId() + " AND "
                            + Data.MIMETYPE + "= '"
                            + clsContacts.FORMALITY_MIMETYPE + "'", null);

            if (mod == 0) {
                values.put(Data.CONTACT_ID, this.getId());
                values.put(Data.MIMETYPE, clsContacts.FORMALITY_MIMETYPE);
                ctx.getContentResolver().insert(Data.CONTENT_URI, values);
            }
        } catch (Exception e) {
            Log.v(TAG(), "saveFormality failed");
        }
     returnthis;
    }

public boolean getFormality() {
     if (data.containsKey(FORMALITY)) {
        returndata.getAsBoolean(FORMALITY);
    } else {
        // read formality
        Cursor c = readDataWithMimeType(clsContacts.MIMETYPE_FORMALITY, this.getId());
        if (c != null) {
            try {
                if (c.moveToFirst()) {
                    this.setFormality(c.getInt(0) == 1);
                    return (c.getInt(0) == 1);
                }
            } finally {
                c.close();
            }
        }
        returnfalse;
    }

}
public clsMyClass setFormality(Boolean value) {
    data.remove(FORMALITY);
    data.put(FORMALITY, value);
    returnthis;
}

/**
 * Utility method to read data with mime type
 *
 * @param mimetype String representation of the mimetype used for this type
 *            of data
 * @param contactid String representation of the contact id
 * @return
 */private Cursor readDataWithMimeType(String mimetype, String contactid) {
    return ctx.getContentResolver().query(
            Data.CONTENT_URI,
            new String[] {
                Data.DATA1
            },
            Data.RAW_CONTACT_ID + "=" + contactid + " AND " + Data.MIMETYPE + "= '" + mimetype
                    + "'", null, null);
}

Usage is

objContact.setFormality(true).saveFormality();

Post a Comment for "How To Programmatically Assign A Picture (bitmap) To A Contact?"