任何人都可以告诉我如何创建一个ContentProvider,它可以查询多个数据库/ ContentProviders以获取SearchView提供的搜索建议。
答案 0 :(得分:2)
使用ContentProviders,您正在使用ContentUrl查询数据,该内容看起来像这样
content://<authority>/<data_type>/<id>
权限是内容提供商名称,例如联系人或自定义联系人将是com.xxxxx.yyy。
data_type 和 id 用于指定您需要提供的数据,如果需要,还可以指定密钥的特定值。
因此,如果要构建自定义内容提供程序,则需要解析在查询函数中作为参数获取的内容uri,并确定需要将哪些数据作为Cursor返回。对于这种情况,UriMatcher类是非常好的选择。这是一个例子
static final String URL = "content://com.mycompany.myapp/students";
static final Uri CONTENT_URI = Uri.parse(URL);
static final UriMatcher uriMatcher;
static{
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
uriMatcher.addURI("com.mycompany.myapp", "students", 1);
uriMatcher.addURI("com.mycompany.myapp", "students/#", 2);
}
然后在你的查询函数中,你会有这样的东西:
switch (uriMatcher.match(uri)) {
case 1:
// we are querying for all students
// return a cursor all students e.g. "SELECT * FROM students"
break;
case 2:
// we are querying for all students
// return a cursor for the student matching the given id (the last portion of uri)
// e.g. "SELECT * FROM students WHERE _id = n"
break;
default:
throw new IllegalArgumentException("Unknown URI " + uri);
}
我希望这可以回答你的问题,并引导你走上正确的轨道。
在这里,你可以看到一篇很好的文章,里面有关于如何使用它们的完整示例 http://www.tutorialspoint.com/android/android_content_providers.htm