我看android开发入门与实战上是这样说的:
一个ContentProvider类实现了一组标准的方法接口,从而能够让其它应用保存或读取此contentprovider的各种数据类型,外界根本看不到也不用看到这个应用暴露出去的数据在应用中是如何来存储的,或者用数据库存储或者是文件存储从这段话理解,应该也可以让ContentProvider来封装SharePreferences的数据吧?
我是想在一个例子中,把各种知识点都用上,练一遍,故有此想法,但不知是否有方法可以通过已知的几个字符串来构建cursor这样一个对象

解决方案 »

  1.   

    继承AbstractCursor试试?public AbstractCursor query(Uri uri,...) {
      .
      .
      .
    }
      

  2.   

    直接上代码
    public static class YourProviderColumns {
            public static final String _ID = "_id";
            public static final String GPSSETTING = "_gpssetting";
            public static final String MAPSETTING = "_mapsetting";
        }
    MatrixCursor ret = new MatrixCursor(projection);
    Object[] values = new Object[projection.length];
    for (int i = 0, count = projection.length; i < count; i++) {
                String column = projection[i];
                if (YourProviderColumns._ID.equals(column)) {
                    values[i] = id;
                }
                else if (YourProviderColumns.GPSSETTING.equals(column)) {
                    values[i] = settings.getString(AppSetting.GPSSETTING, "");
                }
                else if (YourProviderColumns.MAPSETTING.equals(column)) {
                    values[i] = settings.getString(AppSetting.MAPSETTING, ""); 
                }
            }
    ret.addRow(values);
    return ret
      

  3.   

    谢谢skybigbird
    你的方法确实可行。