2011-12-12 11 views
5

Con lo snippet di seguito, sono in grado di sincronizzare tutti i miei contatti con un'API REST. È grandioso e tutto funziona bene. Posso aggiungere persone con nome e numero di telefono.Come posso aggiungere un'immagine di contatto all'interno di ContentProviderOperation?

Purtroppo, Ora sto cercando senza successo per aggiungere un'immagine da sdcard (ho un bitmap o un Drawable)

qualcuno mi può indicare un modo per raggiungere questo o darmi qualche indizio?

Grazie mille!

Ecco il codice di esempio che attualmente uso:

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
int rawContactInsertIndex = ops.size(); 

ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI) 
    .withValue(RawContacts.ACCOUNT_TYPE, null) 
    .withValue(RawContacts.ACCOUNT_NAME,null) 
    .build()); 
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
    .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 
    .withValue(Data.MIMETYPE,Phone.CONTENT_ITEM_TYPE) 
    .withValue(Phone.NUMBER, "9X-XXXXXXXXX") 
    .build()); 
ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI) 
    .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex) 
    .withValue(Data.MIMETYPE,StructuredName.CONTENT_ITEM_TYPE) 
    .withValue(StructuredName.DISPLAY_NAME, "Mike Sullivan") 
    .build()); 
ContentProviderResult[] res = getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 

risposta

11

Si prega di provare questo

Bitmap bmImage = BitmapFactory.decodeFile(imagePath); 
        ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
        bmImage.compress(Bitmap.CompressFormat.JPEG, 80, baos); 
        byte[] b = baos.toByteArray(); 



        ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
          .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 
          .withValue(ContactsContract.Data.MIMETYPE, 
            ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE) 
            .withValue(ContactsContract.CommonDataKinds.Photo.DATA15,b) 
            .build()); 
+0

Perfetto! Grazie mille! –

+0

ContactsContract.CommonDataKinds.Photo.PHOTO è l'equivalente leggibile per ContactsContract.CommonDataKinds.Photo.DATA15 – Roel

Problemi correlati