gpt4 book ai didi

android-contacts - 以编程方式从 Android 中删除联系人图片

转载 作者:行者123 更新时间:2023-12-01 14:19:32 24 4
gpt4 key购买 nike

我正在尝试通过代码删除联系人图片。我通过将 Photo.PHOTO 设置为 null 来尝试此操作。但是,该语句会引发异常。这是代码:

ContentValues values = new ContentValues();
int result = 0;

values.put(Data.RAW_CONTACT_ID, contactId);
values.put(Data.MIMETYPE, Photo.CONTENT_ITEM_TYPE);
values.put(Photo.PHOTO, (byte[])null);

result = getContext().getContentResolver().update(Data.CONTENT_URI, values, Data.RAW_CONTACT_ID + "=?", new String[]{String.valueOf(contactId)});

这是异常(exception)

android.database.sqlite.SQLiteException: unknown error (code 0): Unable to convert BLOB to string at android.database.CursorWindow.nativeGetString(Native Method) at android.database.CursorWindow.getString(CursorWindow.java:434) at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51) at com.android.providers.contacts.DataRowHandler.getAugmentedValues(DataRowHandler.java:332) at com.android.providers.contacts.DataRowHandlerForStructuredName.update(DataRowHandlerForStructuredName.java:70) at com.android.providers.contacts.ContactsProvider2.updateData(ContactsProvider2.java:4507) at com.android.providers.contacts.ContactsProvider2.updateData(ContactsProvider2.java:4490) at com.android.providers.contacts.ContactsProvider2.updateInTransaction(ContactsProvider2.java:3875) at com.android.providers.contacts.AbstractContactsProvider.update(AbstractContactsProvider.java:143) at com.android.providers.contacts.ContactsProvider2.update(ContactsProvider2.java:2061) at android.content.ContentProvider$Transport.update(ContentProvider.java:235) at android.content.ContentResolver.update(ContentResolver.java:990)

最佳答案

以下是删除照片的方法(基于 this post):

ContentProviderOperation.Builder builder = ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI);

builder.withSelection(ContactsContract.Data.CONTACT_ID + "=?" + " AND " + ContactsContract.Data.MIMETYPE + "=?",
new String[] { ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE });
builder.withValue(Integer.toString(id),ContactsContract.CommonDataKinds.Photo.PHOTO, (byte[0])null);

final ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(builder.build());
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);

关于android-contacts - 以编程方式从 Android 中删除联系人图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13998842/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com