2

我一直在谷歌搜索一种将 abundle转换为适合作为BLOB类型存储在数据库中的字符串的方法。我发现了很多将其序列化为文件的示例,但没有提及如何将其放入字符串或字节数组中。谁能给我一个例子来说明这是如何做到的?

我正在开发一个应用程序,该应用程序将插件用于自定义 UI 组件,并希望在插件中调用配置活动,传递存储在数据库中的一组配置选项。该活动将返回带有更新选项的捆绑包,然后我需要将其保存回数据库。

如果有人能指出我正确的方向,我将不胜感激。

4

1 回答 1

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());
    }
}
于 2012-05-05T04:51:32.847 回答