Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
插入新的android联系人照片_Android_Android Contentprovider_Android Contacts - Fatal编程技术网

插入新的android联系人照片

插入新的android联系人照片,android,android-contentprovider,android-contacts,Android,Android Contentprovider,Android Contacts,我想为联系人插入照片时遇到问题。 我想插入没有图像的“父”联系人图像 我只想更改联系人的照片,而不是原始联系人(联系人id) 它只适用于更新,但不适用于插入,怎么了?照片未记录在内容提供商中 //UPDATE if (contact.getPhotoURL() != null){ ops.add(ContentProviderOperation .newUpdate(Data.CONTENT_URI)

我想为联系人插入照片时遇到问题。 我想插入没有图像的“父”联系人图像

我只想更改联系人的照片,而不是原始联系人(联系人id)

它只适用于更新,但不适用于插入,怎么了?照片未记录在内容提供商中

//UPDATE
    if (contact.getPhotoURL() != null){
            ops.add(ContentProviderOperation
                    .newUpdate(Data.CONTENT_URI)
                    .withSelection(ContactsContract.Data.CONTACT_ID + "=?" + " AND " + ContactsContract.Data.MIMETYPE + "=?",
                            new String[] { String.valueOf(contact.getId()), ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE })
                            .withValue(ContactsContract.CommonDataKinds.Photo.PHOTO, baos.toByteArray())
                            .build());
        }else{
//INSERT
            ops.add(ContentProviderOperation
                    .newInsert(Data.CONTENT_URI)
                    .withValue(ContactsContract.Data.CONTACT_ID, contact.getId())
                    .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE)
                    .withValue(ContactsContract.CommonDataKinds.Photo.PHOTO, baos.toByteArray())
                    .build());
        }
谢谢

编辑: 下面的代码有效

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    bmp.compress(Bitmap.CompressFormat.PNG, 100, baos);

    ContentResolver c = ctx.getContentResolver();


ContentValues values = new ContentValues();
int photoRow = -1;
String where = ContactsContract.Data.RAW_CONTACT_ID + " = " + personId + " AND " + ContactsContract.Data.MIMETYPE + "=='" + ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE + "'";
Cursor cursor = c.query(ContactsContract.Data.CONTENT_URI, null, where, null, null);
int idIdx = cursor.getColumnIndexOrThrow(ContactsContract.Data._ID);
if (cursor.moveToFirst()) {
    photoRow = cursor.getInt(idIdx);
}
cursor.close();

values.put(ContactsContract.Data.RAW_CONTACT_ID, personId);
values.put(ContactsContract.Data.IS_SUPER_PRIMARY, 1);
values.put(ContactsContract.CommonDataKinds.Photo.PHOTO, baos.toByteArray());
values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE);

if (photoRow >= 0) {
    c.update(ContactsContract.Data.CONTENT_URI, values, ContactsContract.Data._ID + " = " + photoRow, null);
} else {
    c.insert(ContactsContract.Data.CONTENT_URI, values);
}
该字段为超级主修复问题,照片保存为“全局”联系人,而不仅仅是特定的原始联系人


问候。

谢谢,工作正常。。。。。。。。