0
Bitmap bmp = BitmapFactory.decodeFile("/sdcard/abc.jpg");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG, 75, stream); ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
int photoId = -1;
Cursor cursor = c.query(Phone.CONTENT_URI, null, Phone.CONTACT_ID
+ " = " + id, null, null);
int idIdx = cursor.getColumnIndexOrThrow(Photo.PHOTO_ID);
System.out.println("cursor counts------------------"
+ cursor.getCount());
System.out.println(Photo.PHOTO.equals(Photo.DATA15));
if (cursor.moveToFirst())
{
photoId = cursor.getInt(idIdx);
System.out.print("photo id-------------" + photoId);
}
cursor.close();
if (photoId > 0)
{
System.out.println("do update");
ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI)
.withSelection(Data._ID + "=?", new String[]
{ String.valueOf(photoId) })
.withValue(Data.RAW_CONTACT_ID, id)
.withValue(Data.MIMETYPE, Photo.CONTENT_ITEM_TYPE)
.withValue(Photo.PHOTO, bytes).build());
}
else
{
System.out.println("do insert");
ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
.withValue(Data.RAW_CONTACT_ID, id)
.withValue(Data.MIMETYPE, Photo.CONTENT_ITEM_TYPE)
.withValue(Photo.PHOTO, bytes).build());
}
c.applyBatch(ContactsContract.AUTHORITY, ops);
私は連絡先画像を挿入または更新するために上記のコードを使用しましたが、連絡先に画像を添付すると画像は連絡先リストに表示されます。 :)特定の連絡先の代わりに別の連絡先に画像が添付されることがあります(IDで指定されます)。アンドロイド:連絡先に画像を添付
どれでもお手伝いできますか? – KingBright