diff options
| -rw-r--r-- | core/java/android/content/ContentValues.java | 6 | ||||
| -rw-r--r-- | core/java/android/database/DatabaseUtils.java | 5 |
2 files changed, 6 insertions, 5 deletions
diff --git a/core/java/android/content/ContentValues.java b/core/java/android/content/ContentValues.java index 7ed827c00e65..3a87cb3e7a29 100644 --- a/core/java/android/content/ContentValues.java +++ b/core/java/android/content/ContentValues.java @@ -414,7 +414,11 @@ public final class ContentValues implements Parcelable { return (Boolean) value; } catch (ClassCastException e) { if (value instanceof CharSequence) { - return Boolean.valueOf(value.toString()); + // Note that we also check against 1 here because SQLite's internal representation + // for booleans is an integer with a value of 0 or 1. Without this check, boolean + // values obtained via DatabaseUtils#cursorRowToContentValues will always return + // false. + return Boolean.valueOf(value.toString()) || "1".equals(value); } else if (value instanceof Number) { return ((Number) value).intValue() != 0; } else { diff --git a/core/java/android/database/DatabaseUtils.java b/core/java/android/database/DatabaseUtils.java index 227066ddc571..8cd3d7b5bc68 100644 --- a/core/java/android/database/DatabaseUtils.java +++ b/core/java/android/database/DatabaseUtils.java @@ -728,13 +728,10 @@ public class DatabaseUtils { * @param values the {@link ContentValues} to put the row into. */ public static void cursorRowToContentValues(Cursor cursor, ContentValues values) { - AbstractWindowedCursor awc = - (cursor instanceof AbstractWindowedCursor) ? (AbstractWindowedCursor) cursor : null; - String[] columns = cursor.getColumnNames(); int length = columns.length; for (int i = 0; i < length; i++) { - if (awc != null && awc.isBlob(i)) { + if (cursor.getType(i) == Cursor.FIELD_TYPE_BLOB) { values.put(columns[i], cursor.getBlob(i)); } else { values.put(columns[i], cursor.getString(i)); |