Android 不带SQL的ContentProvider

Android 不带SQL的ContentProvider,android,android-2.2-froyo,android-contentprovider,Android,Android 2.2 Froyo,Android Contentprovider,我有两段数据需要从外部应用程序访问和存储。根据文档,ContentProviders是唯一可能的方法,但它也提到了外部存储。ContentProviders实现了一个类似数据库的“接口”,对于两段数据来说,使用数据库是非常不必要的。我更愿意将它们保存到文件中,但是通过实现抽象方法来使用ContentProvider是有问题的,因为这些方法是以数据库查询的形式构造的 我知道没有规定ContentProviders必须使用下面的数据库来存储数据,但是有没有其他方法来存储必须共享到文件系统的最小数据量

我有两段数据需要从外部应用程序访问和存储。根据文档,ContentProviders是唯一可能的方法,但它也提到了外部存储。ContentProviders实现了一个类似数据库的“接口”,对于两段数据来说,使用数据库是非常不必要的。我更愿意将它们保存到文件中,但是通过实现抽象方法来使用ContentProvider是有问题的,因为这些方法是以数据库查询的形式构造的


我知道没有规定ContentProviders必须使用下面的数据库来存储数据,但是有没有其他方法来存储必须共享到文件系统的最小数据量?

我只是使用
MatrixCursor
来解决这个问题。看一看

编辑:对不起,我回答问题时刚刚浏览了一下<代码>内容提供者是应用程序共享数据的唯一方式。应用程序中的活动可以对较小的数据使用
SharedReferences
,并添加持久性

编辑v2:下面是我用来为ContentProvider的查询函数填充MatrixCursor的函数。我使用的是我创建的一个预定义视图,它返回一组不同的值,这将设置一个带有_id的游标,我可以将它传递给我的ExpandableListView

private Cursor getFactions() {
        MatrixCursor mc = new MatrixCursor(Model.Faction.PROJECTION);
        SQLiteDatabase db = dbHelper.getReadableDatabase();
        Cursor c = db.query(MODELFACTION_TABLE_NAME, new String[] { Model.Faction.FACTION }, null, null, null, null, Model.Faction.FACTION + " ASC");
        c.moveToFirst();
        do {
            mc.addRow(new Object[] { c.getPosition(), c.getString(c.getColumnIndex(Model.Faction.FACTION))});               
        } while (c.moveToNext() && ! c.isAfterLast());
        c.close();
        db.close();
        return mc;
    }

SharedReferences
类提供了一个通用框架,允许您保存和检索基本数据类型的持久键值对。您可以使用
SharedReferences
保存任何基本数据:布尔值浮点值整数长字符串、和字符串。此数据将在用户会话中保持不变(即使应用程序被终止)

有用链接:


我需要在应用程序之间共享数据,所以我想我需要ContentProviders。MatrixCursor看起来确实很有前途,因为它能够存储对象,但我想MatrixCursor需要由某个地方的DB支持是吗?一点也不!我刚刚创建了MatrixCursor,并添加了元素。不需要数据库。在实例化MatrixCursor时,提供字段名或列名的字符串[],然后只添加数据集或行。从何处获取数据完全取决于您。最终使用了一个矩阵光标,下面是标准的文件输入/输出。然后使用ContentResolver.query()读取信息并将其存储在游标中。谢谢你的帮助!