在Android中将联系人号码更新为STARRED

时间:2012-11-22 11:32:54

标签: android android-contacts

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

    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();
    }

上面的代码不会抛出任何异常,但也不会更新数据库。如果您有解决方案,请告诉我。在此先感谢!!

2 个答案:

答案 0 :(得分:1)

这样做是为了将特定联系人标记为STARRED。

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

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

答案 1 :(得分:0)

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

right join

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