0

我正在尝试将特定的联系电话标记为收藏(已加星标)。为此,我使用以下查询:

    String selectPhone = Phone._ID + "=?";
    String[] phoneArgs = new String[]{ NUMBER_ID }; 
    ContentValues values = new ContentValues();
    values.put(Phone.STARRED, 0);

    ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
    ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI)
            .withSelection(selectPhone, phoneArgs)
            .withValue(Phone.STARRED, 1)
            .build()); 
    try {
        getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
    } catch (RemoteException e) {
        e.printStackTrace();
    } catch (OperationApplicationException e) {
        e.printStackTrace();
    }

上面的代码没有抛出任何异常,但也没有更新数据库。如果您有解决方案,请告诉我。提前致谢 !!

4

2 回答 2

2

这样做可以将特定联系人标记为已加星标。

ContentValues values = new ContentValues();
        String[] fv = new String[] { "Juned" };
        values.put(Contacts.STARRED, 1);
        getContentResolver().update(Contacts.CONTENT_URI, values,
                Contacts.DISPLAY_NAME + "= ?", fv);

只需将此行中的第二个参数 1 更改为 0values.put(Contacts.STARRED, 1);即可取消加星标的联系人。

于 2012-11-22T12:24:43.943 回答
0

“加星标”属性属于联系人实体。至少,这是我从 ContactsContract.class 定义中得到的。我使用如下代码:

ops.add(ContentProviderOperation.newUpdate(ContactsContract.RawContacts.CONTENT_URI)
                    .withSelection(ContactsContract.Data._ID + " = ?",
                            new String[]{contactRawId})
                    .withValue(ContactsContract.Contacts.STARRED, isFavorite ? 1 : 0)
                    .build());

其中参数为 (int)contactRawId, (boolean)isFavorite

于 2019-05-12T16:50:52.830 回答