Contact Custom Fields

后端 未结 3 433
我寻月下人不归
我寻月下人不归 2020-12-10 07:55

Alright, I\'m a little new to the Android SDK, so forgive me if my question doesn\'t make sense or is very trivial. I\'d like to add a custom field for contacts, that contai

3条回答
  •  温柔的废话
    2020-12-10 08:44

    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

    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");
            }
         return this;
        }
    
    public boolean getFormality() {
         if (data.containsKey(FORMALITY)) {
            return data.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();
                }
            }
            return false;
        }
    
    }
    public clsMyClass setFormality(Boolean value) {
        data.remove(FORMALITY);
        data.put(FORMALITY, value);
        return this;
    }
    
    /**
     * 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();
    

提交回复
热议问题