Android 插入匹配器

Android 插入匹配器,android,uri,android-contentprovider,Android,Uri,Android Contentprovider,我对UriMatcher有点困惑 sURIMatcher.addURI(AUTHORITY, BASE_PATH, BOOK); sURIMatcher.addURI(AUTHORITY, BASE_PATH + "/#", BOOK_ID); 书的路径中实际存储了什么? 当更新和删除时,BOOK_ID将是唯一可以使用的东西,那么BOOK的用途是什么呢 谢谢。这是一本关于urimatcher的迷你入门书。BOOK和BOOK_ID是常量整数,提供程序仅使用它们来确定要执行的代码。BASE_PAT

我对UriMatcher有点困惑

sURIMatcher.addURI(AUTHORITY, BASE_PATH, BOOK);
sURIMatcher.addURI(AUTHORITY, BASE_PATH + "/#", BOOK_ID);
书的路径中实际存储了什么? 当更新和删除时,BOOK_ID将是唯一可以使用的东西,那么BOOK的用途是什么呢


谢谢。

这是一本关于urimatcher的迷你入门书。BOOK和BOOK_ID是常量整数,提供程序仅使用它们来确定要执行的代码。BASE_PATH是调用者传入的字符串,可能是表的名称,但实现并不严格。AUTHORITY是调用方com.example.provider传入的字符串

发生的情况是uri进入内容提供程序,urimatcher通过返回整数来确定要执行的代码

int uriType = sURIMatcher.match(uri);
        switch (uriType) {
        case TODOS:
            checkColumns(availableRides, projection);
            queryBuilder.setTables(RidesDatabaseHandler.TABLE_RIDES);
            break;
        case TODO_ID:
            checkColumns(availableRides, projection);
            queryBuilder.setTables(RidesDatabaseHandler.TABLE_RIDES);
            // adding the ID to the original query
            queryBuilder.appendWhere(RidesDatabaseHandler.KEY_ID + "="
                    + uri.getLastPathSegment());
            break;
        case LOCATIONS:
            checkColumns(availableLocations, projection);
            queryBuilder.setTables(RidesDatabaseHandler.TABLE_LOCATIONS);
            break;
        default:
            throw new IllegalArgumentException("Unknown URI: " + uri);
        }