Как обращаться к нескольким поставщикам контента?

Я создал двух контент-провайдеров, которые работают с двумя разными таблицами одной и той же базы данных SQLite. У них общий экземпляр SQLiteOpenHelper, как , описанный в посте Али Сергини . Каждый поставщик контента регистрируется в AndroidManifest.xmlследующим образом.





Каждый поставщик контента определяет необходимые URI контента и предоставляет UriMatcher.

public class PostsProvider extends BaseContentProvider {

    private static final UriMatcher sUriMatcher = buildUriMatcher();
    private static final int POSTS = 100;
    private static final int POST_ID = 101;

    private static UriMatcher buildUriMatcher() {
        final UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH);
        final String authority = CustomContract.CONTENT_AUTHORITY;
        matcher.addURI(authority, DatabaseProperties.TABLE_NAME_POSTS, POSTS);
        matcher.addURI(authority, DatabaseProperties.TABLE_NAME_POSTS + "/#", POST_ID);
        return matcher;
    }

...

public class CommentsProvider extends BaseContentProvider {

    protected static final UriMatcher sUriMatcher = buildUriMatcher();
    protected static final int COMMENTS = 200;
    protected static final int COMMENT_ID = 201;

    private static UriMatcher buildUriMatcher() {
        final UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH);
        final String authority = CustomContract.CONTENT_AUTHORITY;
        matcher.addURI(authority, DatabaseProperties.TABLE_NAME_COMMENTS, COMMENTS);
        matcher.addURI(authority, DatabaseProperties.TABLE_NAME_COMMENTS + "/#", COMMENT_ID);
        return matcher;
    }

Когда я вызываю распознаватель содержимого для вставки сообщений, целью является PostsContentProvider. Однако, когда я пытаюсь вставить комментарии, преобразователь содержимого не ссылается на CommentsContentProvider, как ожидалось, а вызывает PostsContentProvider. Результатом является следующее исключение, которое я добавляю в PostsContentProvider.

UnsupportedOperationException: Unknown URI: content://com.example.myapp.provider/comments

Можно ли вывести все доступные URI контента, зарегистрированные в настоящее время у поставщика контента?

16
задан JoxTraex 15 August 2012 в 19:09
поделиться