2011-12-12 15 views
5

Aşağıdaki pasajla, tüm iletişim bilgilerimi bir REST API ile senkronize edebiliyorum. Bu harika ve her şey iyi çalışıyor. İsim ve telefon numarası olan kişileri ekleyebilirim.ContentProviderOperation'ın içine bir kişi resmini nasıl ekleyebilirim?

Ne yazık ki, şimdi SDCard bir resim eklemek için başarılı olamadı çalışıyorum

Birisi bana bunu başarmak ya da bana bazı ipuçları vermek için bir yol gösterebilir

(Bir Bitmap veya Drawable olsun)?

Çok teşekkürler!

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

cevap

11

bu

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

Mükemmel deneyin:

burada kullanmakta örnek kod! Çok sağol! –

+0

KişilerContract.CommonDataKinds.Photo.PHOTO KişilerContract.CommonDataKinds.Photo.DATA15 için okunabilir eşdeğerdir – Roel

İlgili konular