1

我的代码适用于已经有图片的联系人,但如果联系人已经没有图片,它不会更新。

Bitmap photo =pic;
ByteArrayOutputStream stream = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.JPEG, 100, stream);    
if(! ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
        .withSelection(
                ContactsContract.Data.RAW_CONTACT_ID + "=" + RawId + " AND "
                        + ContactsContract.Data.MIMETYPE +     "='"
                        +   ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE+ "'", null)

         .withValue(ContactsContract.CommonDataKinds.Photo.PHOTO,stream.toByteArray())
         .build()))
{
Toast.makeText(getApplicationContext(), "Failed to update",  Toast.LENGTH_SHORT).show();}
else if(noPhoto==1)
{

int rawContactId = -1;
Cursor c = getContentResolver().query(ContactsContract.Data.CONTENT_URI, null,   ContactsContract.Data.CONTACT_ID + "=?", new String[] {contactID2}, null);
   if(c.moveToFirst())
   {


           ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)

                    .withValue(ContactsContract.Data.RAW_CONTACT_ID,RawId )
                    .withValue(ContactsContract.Data.IS_SUPER_PRIMARY, 1)
                    .withValue(ContactsContract.Data.MIMETYPE,      ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE)
                    .withValue(ContactsContract.Data.DATA15, stream.toByteArray())
                   .build());

   } 
4

0 回答 0