Android Q Beta - 从包裹创建时 ContentValue 为空

Pra*_*vin 7 android android-10.0

安卓构建: QPP5.190530.015

模拟器: Pixel 2

HashMap<String,Object> map = new HashMap<>();
map.put("key1", true);
map.put("key2", "String");
map.put("key3", 3);

Parcel parcel = Parcel.obtain();
parcel.writeMap(map);
parcel.setDataPosition(0);
ContentValues contentValues = ContentValues.CREATOR.createFromParcel(parcel);
Run Code Online (Sandbox Code Playgroud)

预期结果:

contentValues would contain the data of the given map.

实际结果 :

contentValues is empty

ind*_*ine 2

我在 Android Q 中的 createFromParcel 和 hashmap 中也遇到了同样的问题,通过迭代 hashmap 并将值转换为其各自的类型来解决它。

  private ContentValues getContentValuesFromHashMapValues(HashMap<String, Object> hashMap) {
            ContentValues contentValues = new ContentValues();
            for (Map.Entry<String, Object> entry : hashMap.entrySet()) {
                Object value = entry.getValue();
                String key = entry.getKey();

                if (value instanceof Integer) {
                    contentValues.put(key, (Integer) value);
                } else if (value instanceof Long) {
                    contentValues.put(key, (Long) value);
                } else if (value instanceof Short) {
                    contentValues.put(key, (Short) value);
                } else if (value instanceof Float) {
                    contentValues.put(key, (Float) value);
                } else if (value instanceof Double) {
                    contentValues.put(key, (Double) value);
                } else if (value instanceof Byte) {
                    contentValues.put(key, (Byte) value);
                } else if (value instanceof Boolean) {
                    contentValues.put(key, (Boolean) value);
                } else if (value instanceof String) {
                    contentValues.put(key, ((value == null) ? "" : (String) value));
                }
            }

            return contentValues;
        }
Run Code Online (Sandbox Code Playgroud)