diff --git a/android/build.gradle b/android/build.gradle index 96095ea..5510b6c 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -36,5 +36,5 @@ android { dependencies { // See: https://www.zetetic.net/sqlcipher/sqlcipher-for-android/ - compile 'net.zetetic:android-database-sqlcipher:4.0.0@aar' + compile 'net.zetetic:android-database-sqlcipher:4.2.0@aar' } diff --git a/android/src/main/java/com/github/drydart/flutter_sqlcipher/SQLiteDatabaseHandler.java b/android/src/main/java/com/github/drydart/flutter_sqlcipher/SQLiteDatabaseHandler.java index 61713ed..8b9174b 100644 --- a/android/src/main/java/com/github/drydart/flutter_sqlcipher/SQLiteDatabaseHandler.java +++ b/android/src/main/java/com/github/drydart/flutter_sqlcipher/SQLiteDatabaseHandler.java @@ -445,9 +445,45 @@ class SQLiteDatabaseHandler extends FlutterMethodCallHandler { convertMapToContentValues(final Map input) { assert(input != null); - final Parcel parcel = Parcel.obtain(); - parcel.writeMap(input); - parcel.setDataPosition(0); - return ContentValues.CREATOR.createFromParcel(parcel); + ContentValues cv = new ContentValues(input.size()); + for (final Map.Entry entry : input.entrySet()) { + final String key = entry.getKey(); + final Object value = entry.getValue(); + + if (value == null) { + cv.putNull(key); + } + else if (value instanceof Boolean) { + cv.put(key, (Boolean)value); + } + else if (value instanceof Byte) { + cv.put(key, (Byte)value); + } + else if (value instanceof Short) { + cv.put(key, (Short)value); + } + else if (value instanceof Integer) { + cv.put(key, (Integer)value); + } + else if (value instanceof Long) { + cv.put(key, (Long)value); + } + else if (value instanceof Double) { + cv.put(key, (Double)value); + } + else if (value instanceof Float) { + cv.put(key, (Float)value); + } + else if (value instanceof String) { + cv.put(key, (String)value); + } + else if (value instanceof byte[]) { + cv.put(key, (byte[])value); + } + else { + throw new IllegalArgumentException("Unsupported class type " + value.getClass() + " for key " + key); + } + } + return cv; } }