我一直在谷歌搜索一种方法,将bundle
转换为适合以BLOB
类型存储在数据库中的字符串。我已经找到了很多将它序列化到文件中的例子,但没有提到如何将它放入字符串或字节aray中。谁能给我一个如何做到这一点的例子?
我正在开发一个应用程序,它将使用插件用于自定义UI组件,并希望在插件中调用配置活动,传递存储在数据库中的一组配置选项。该活动将返回包含更新选项的包,然后我需要将其保存回数据库。
如果有人能指出我正确的方向,我将不胜感激。
答案 0 :(得分:3)
你的第一步是创建一个表来放入它。在这种情况下,应该做一些基本的事情。
CREATE TABLE bundles (
_id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
value BLOB);
然后你需要一个插入Bundle
的方法,如下所示:
private void put(SQLiteDatabase db, String name, Bundle bundle) {
ByteArrayOutputStream valueStream = new ByteArrayOutputStream();
try {
ContentValues rows = new ContentValues();
rows.put("name", name);
Parcel p = Parcel.obtain();
bundle.writeToParcel(p, 0);
valueStream.write(p.marshall());
rows.put("value", valueStream.toByteArray());
db.insert("bundles", null, rows);
valueStream.close();
} catch (IOException e) {
Log.e("error writing object", e.toString());
}
}