2010-06-19 4 views

Répondre

4

Vous devez créer votre propre type mime pour ceux-ci.

Voici un exemple qui enregistre un booléen comme mon type mime personnalisé pour les contacts. Il utilise le dernier SDK 2.1

Important

Cet exemple utilise DATA1 pour les données, DATA1 est indexé, mais ce n'est pas recommandé pour les données binaires. Dans votre cas pour stocker des données binaires telles que l'image vous devez utiliser DATA15.

Par convention, DATA15 est utilisé pour stocker des BLOB (données binaires).

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

L'utilisation est

objContact.setFormality(true).saveFormality(); 
Questions connexes