代码之家  ›  专栏  ›  技术社区  ›  Spredzy

如何以编程方式将图片(位图)分配给联系人?

  •  4
  • Spredzy  · 技术社区  · 14 年前

    我有一个bitmap类型的变量,我想将它作为被叫方图片分配给我联系人列表中的联系人,我该怎么做?

    1 回复  |  直到 12 年前
        1
  •  4
  •   Pentium10    14 年前

    您必须为这些创建自己的mime类型。

    下面是一个将布尔值保存为联系人的自定义mime类型的示例。它使用最新的SDK 2.1

    重要的

    此示例使用data1作为数据,data1被索引,但不建议对二进制数据进行修改。 在您的情况下存储二进制数据,如图片 你必须使用数据15 .

    按照惯例,data15用于存储blob(二进制数据)。

    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);
    }
    

    用法是

    objContact.setFormality(true).saveFormality();