我正在尝试将特定联系人号码标记为收藏(已加星标)。为此,我使用以下查询:
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();
}
上面的代码不会抛出任何异常,但也不会更新数据库。如果您有解决方案,请告诉我。在此先感谢!!
答案 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