Можно ли обойти ArrayMap.containsKey()

#java #android

Вопрос:

Мне нужно передать «contact_id» этому методу, но есть проверка, которая предотвращает обновление этого столбца. Вы все равно видите, что я могу обойти его и обновить столбец contact_id как один из столбцов в values

 // ANDROID CODE public static final String CONTACT_ID = "contact_id";  private int updateRawContacts(ContentValues values, String selection, String[] selectionArgs,  boolean callerIsSyncAdapter) {  if (values.containsKey(RawContacts.CONTACT_ID)) {  throw new IllegalArgumentException(RawContacts.CONTACT_ID   " should not be included "    "in content values. Contact IDs are assigned automatically");  }  if (!callerIsSyncAdapter) {  selection = DatabaseUtils.concatenateWhere(selection,  RawContacts.RAW_CONTACT_IS_READ_ONLY   "=0");  }  int count = 0;  final SQLiteDatabase db = mDbHelper.get().getWritableDatabase();  Cursor cursor = db.query(Views.RAW_CONTACTS,  Projections.ID, selection,  selectionArgs, null, null, null);  try {  while (cursor.moveToNext()) {  long rawContactId = cursor.getLong(0);  updateRawContact(db, rawContactId, values, callerIsSyncAdapter,  /* callerIsMetadataSyncAdapter =*/false);  count  ;  }  } finally {  cursor.close();  }  return count;  }  // MY CODE ContentProviderOperation.newUpdate(RAW_CONTACTS_URI)  .withValue(RawContacts.CONTACT_ID, RawContacts._ID);  

Комментарии:

1. Вы обновляете запись в таблице БД, верно? Является ли contact_id ключом для записи?

2. Я не вижу ArrayMap в вашем коде. Я действительно вижу containsKey() вызов, но это на а ContentValues , а не на ArrayMap А. Возможно, у вас неправильный код в вопросе или неправильное название.