UPDATE
Google исправил ранее упомянутую ошибку, хотя она еще не была реализована на момент публикации:
https://code.google.com/p/android/issues/detail?id=232274
Стоит отметить, что текущий API опасен и может сломать ваше приложение, если что-то изменится под капотом.
Кроме того, ContentValues.getBoolean
имеет серьезную проблему: если вы создадите ContentValues
с DatabaseUtils.cursorRowToContentValues
, он будет рассматривать КАЖДОЕ поле как строку:
values.put(columns[i], cursor.getString(i));
Когда вы затем получите поле через ContentValues.getBoolean
, вы ВСЕГДА получите false:
if (value instanceof CharSequence) {
return Boolean.valueOf(value.toString());
Поскольку значение равно "0" или "1", это преобразование завершается неудачно:
private static boolean toBoolean(String name) {
return ((name != null) && name.equalsIgnoreCase("true"));
Поэтому я настоятельно рекомендую вам создать свой собственный метод получения и установки, чтобы ваше поведение было четко определено.