2

我是内容提供商的新手,我一直在参考文档以了解和创建自定义内容提供商。

我在内容提供者的内容描述符类中有这样的路径:

public static final String PATH = "tbl_reco_index_contents";
public static final String PATH_FOR_ID = "tbl_reco_index_contents/*";

使用下面的代码,我可以从我需要的列中获取数据,没有任何问题:

    public static final String AUTHORITY = "com.nyk.launcherprovider";
private static final Uri BASE_URI = Uri.parse("content://" + AUTHORITY);
public static final String PATH = "tbl_reco_index_contents";
public static final Uri CONTENT_URI = BASE_URI.buildUpon().appendPath(PATH).build();
    cur = this.getContentResolver().query(CONTENT_URI, new String[]{
            "reco_index_content_name",
            "reco_index_content_url"
        }, null, null, null);

    cur.moveToFirst();
    for(int i=0;i<cur.getCount();i++){
        System.out.println("Name is:"+cur.getString(10));
        System.out.println("URL is:"+cur.getString(11));
        cur.moveToNext();
    }

我不知道,如何在这里使用 where 条件获取数据。IE; 如果我需要添加类似的条件WHERE user_profile_number = 2 and pkg_name = 'abc',我该如何处理上面的代码。

任何帮助深表感谢。

4

2 回答 2

7

当您使用波纹管语句时,它会在内容提供程序中调用PATH

Cursor cursor = getContentResolver().query(YOUR_URI, null, "user_profile_number = ? AND pkg_name = ? ", new String[]{"2", "abc"}, null);

如果您想根据 id 调用数据,则意味着您想调用PATH_FOR_ID 然后使用

Cursor cursor = getContentResolver().query(ContentUris.withAppendedId(CONTENT_URI, id), null, null, null, null);
于 2016-12-20T05:58:01.937 回答
0

利用

cur = this.getContentResolver().query(CONTENT_URI, new String[]{
        "reco_index_content_name",
        "reco_index_content_url"
    }, "user_profile_number = 2 and pkg_name = 'abc'", null, null, null, null);

这里使用的功能是

公共游标查询(字符串表、字符串 [] 列、字符串选择、字符串 [] 选择参数、字符串 groupBy、字符串具有、字符串 orderBy)

于 2013-06-05T05:48:33.520 回答