public static final UriMatcher uriMatcher;
static {
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
uriMatcher.addURI(Book.AUTHORITY, "item", Book.ITEM);
uriMatcher.addURI(Book.AUTHORITY, "item/#", Book.ITEM_ID);
}
这里UriMatcher类型的静态字段是用来匹配传入到ContentProvider中的Uri的类。其构造方法传入的匹配码是使用match()方法匹配根路径时返回的值,这个匹配码可以为一个大于零的数表示匹配根路径或传入-1,即常量UriMatcher.NO_MATCH表示不匹配根路径。addURI()方法是用来增加其他URI匹配路径的,第一个参数传入标识ContentProvider的AUTHORITY字符串。第二个参数传入需要匹配的路径,
这里的#代表匹配任意数字,另外还可以用*来匹配任意文本。第三个参数必须传入一个大于零的匹配码,用于match()方法对相匹配的URI返回相对应的匹配码。
例子:
@Override
public String getType(Uri uri) {
// TODO Auto-generated method stub
System.out.println(" BookProvider getType...");
int code = uriMatcher.match(uri);
switch (code) {
case Book.ITEM:
System.out.println(" BookProvider getType..." +Book.CONTENT_TYPE);
return Book.CONTENT_TYPE;
case Book.ITEM_ID:
System.out.println(" BookProvider getType..." +Book.CONTENT_ITEM_TYPE);
return Book.CONTENT_ITEM_TYPE;
default:
throw new IllegalArgumentException("Unknown URI " + uri);
}
}
分享到:
相关推荐
首先,初始化 UriMatcher 对象:`UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH);` 其次,注册需要的 Uri:`matcher.addURI("com.yfz.Lesson", "people", PEOPLE);` 最后,与已经注册的 Uri 进行匹配...
1. **定义UriMatcher**: UriMatcher是一个工具类,用于解析输入的Uri并返回匹配的代码。在ContentProvider中,我们需要为每种类型的操作(例如查询、插入、更新和删除)以及每个数据表定义一个唯一的代码。例如,...
UriMatcher uriMatcher = new UriMatcher(UriMatcher.NO_MATCH); // 注册需要匹配的 URI uriMatcher.addURI("com.example.provider", "contact", 1); // 匹配 contact URI uriMatcher.addURI(...
UriMatcher uriMatcher = new UriMatcher(UriMatcher.NO_MATCH); uriMatcher.addURI("com.example.provider", "contact", 1); uriMatcher.addURI("com.example.provider", "contact/#", 2); ``` 这里 `#` 表示...
private UriMatcher mUriMatcher = new UriMatcher(UriMatcher.NO_MATCH); static { mUriMatcher.addURI("com.ljq.providers.personprovider", "person", PERSON); mUriMatcher.addURI(...
final UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH); matcher.addURI("com.itcast.provider.personprovider", "person", PERSONS); matcher.addURI("com.itcast.provider.personprovider", "person...
UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH); matcher.addURI("com.example.provider", "contacts", CONTACTS); matcher.addURI("com.example.provider", "contacts/#", CONTACTS_ID); return ...
UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH); matcher.addURI("com.example.myapp.provider", "mydata", 1); } ``` 3. **覆盖基本方法**:在ContentProvider的子类中,实现数据操作的方法,如:...
private static final UriMatcher MATCHER = new UriMatcher(UriMatcher.NO_MATCH); MATCHER.addURI("com.example.provider", "mydata", MY_DATA); ``` 这里,"mydata"是数据的表名,MY_DATA是匹配码。 4. **覆盖...
UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH); matcher.addURI("com.example.myapp.provider", "items", 1); ``` 2. **创建SQLite数据库**: 设计数据库表结构,创建SQLiteOpenHelper子类,实现`...
- **定义UriMatcher**:创建UriMatcher对象,用于匹配不同的Uri请求,返回对应的操作码。 - **创建ContentProvider类**:继承ContentProvider,实现其生命周期方法,处理数据操作。 - **使用ContentResolver**:...
UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH); matcher.addURI("com.example.provider", "users", 1); // 插入、查询、更新、删除用户 ``` 2. 接着,实现ContentProvider的增删改查方法。例如,`...
UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH); matcher.addURI("com.example.myapp", "items", 1); // 匹配items路径 matcher.addURI("com.example.myapp", "items/#", 2); // 匹配单个item ``` ...
3. **结构**:一个完整的ContentProvider包括四个核心组件:UriMatcher、SQLite数据库(或其他持久化存储)、ContentProvider类以及ContentResolver。 二、ContentProvider工作流程 1. **Uri匹配**:当其他应用想...
3. **URI匹配器(UriMatcher)**:为了将不同的Uri映射到对应的操作,我们需要使用UriMatcher。我们可以为每个数据操作定义一个独特的代码,然后在UriMatcher中添加规则。这样,当接收到Uri请求时,UriMatcher可以...
1. **定义UriMatcher**:UriMatcher是一个工具类,用于解析输入的Uri并匹配预定义的模式。通过添加代码如`UriMatcher.addURI("com.example.provider", "table_name", ID)`,我们可以设置不同的Uri模式来对应...
3. **UriMatcher**:为了处理不同的URI请求,我们需要使用UriMatcher。这个工具类可以根据传入的URI匹配预定义的模式,从而调用相应的方法。例如,为增删查改操作定义不同的码值,然后在ContentProvider中进行匹配。...
private static final UriMatcher sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH); sUriMatcher.addURI("com.example.myapp.provider", "my_table", MY_TABLE); ``` 5. 实现核心方法:根据上一步的Uri匹配结果...
UriMatcher允许开发者为不同的URI路径指定对应的代码,从而方便地匹配和处理请求。ContentUris则提供了处理URI中ID部分的便捷方法,如添加或解析ID,这对于处理具有特定ID的数据记录非常有用。 例如,如果我们有一...
private static final UriMatcher sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH); static { sUriMatcher.addURI("com.example.myapp", "test_a", TEST_A); sUriMatcher.addURI("com.example.myapp", "test_...