#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
А. Возможно, у вас неправильный код в вопросе или неправильное название.