Android的API通过SQLite提供了一个干净的机制来查询联系人列表.但是,我不确定如何限制结果:
Cursor cur = ((Activity)mCtx).managedQuery( People.CONTENT_URI, columns, "LIMIT ? OFFSET ?", new String[] { Integer.toString(limit), Integer.toString(offset) }, null );
不行.
实际上,根据提供程序,您可以为URI附加限制,如下所示:
uri.buildUpon().appendQueryParameter("limit", "40").build()
我知道MediaProvider处理这个问题,从查看最近的代码来看,你似乎也可以通过联系人来处理它.
我从这个bug中发现Android使用以下正则表达式来解析LIMIT
查询的子句:
从
使用以下sLimitPattern检查LIMIT子句.
private static final Pattern sLimitPattern = Pattern.compile("\\s*\\d+\\s*(,\\s*\\d+\\s*)?");
请注意,正则表达式确实接受该格式,offsetNumber,limitNumber
即使它不OFFSET
直接接受该语句.