Страница 1 из 1

Как сделать, чтобы Content Provider использовал следующие пу

Добавлено: 17 апр 2012, 10:47
zesen
В приложении используется WebView. HTML страницы, картинки, скрипты, данные, которые загружаются в WebView, будут храниться в Базе Данных на Android устройстве. Как сделать, чтобы Content Provider использовал следующие пути:

Код: Выделить всё

content://com.example.webviewdataprovider/images/имя_картинки.jpg
content://com.example.webviewdataprovider/scripts/имя_скрипта.js
content://com.example.webviewdataprovider/styles/имя_стиля.css
Все выше описанные файлы будут храниться в БД с таблицей вида <Имя_ФАЙЛА СОДЕРЖИМОЕ_ФАЙЛА>

В БД так же есть таблицы представляющие собой целые объекты(например: Object_1, Object_2, и т.д.). Как сделать, что бы Content Provider мог воспринимать обращения следующего вида:

Код: Выделить всё

content://com.example.webviewdataprovider/ObjectList.htm?Status=Good
Формировал выборку, например из таблицы Object_1, всех записей где Status=Good

Код: Выделить всё

content://com.example.webviewdataprovider/Object.htm?Id=123456
Выводил запись из таблицы Object_1, записи где Id=123456

Это будет применяться в HTML файле, для его формирования. Запись в таком виде нужна для более наглядного отображения текста
Понимаю, что копать нужно в направлении UriMatcher:
Не знаю, иду ли в правильном пути.......

Код: Выделить всё

public static final String AUTHORITY = "com.example.WebViewDataProvider";

    private static final String IMAGES_FOLDER_STR = "images";
    private static final String SCRIPTS_FOLDER_STR = "scripts";
    private static final String STYLES_FOLDER_STR = "styles";
    private static final String OBJECT_LIST_STR = "ObjecList.htm";
    private static final String OBJECT_STR = "Objec.htm";    

    private static final int IMAGES_FOLDER_ID = 15;
    private static final int SCRIPTS_FOLDER_ID = 16;
    private static final int STYLES_FOLDER_ID = 17;
    private static final int OBJECT_LIST_ID = 18;
    private static final int OBJECT_ID = 19;

    private static final UriMatcher sUriMatcher;
    static
    {
        sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
        sUriMatcher.addURI(AUTHORITY, IMAGES_FOLDER_STR, IMAGES_FOLDER_ID);
        sUriMatcher.addURI(AUTHORITY, SCRIPTS_FOLDER_STR, SCRIPTS_FOLDER_ID);
        sUriMatcher.addURI(AUTHORITY, STYLES_FOLDER_STR, STYLES_FOLDER_ID);
        sUriMatcher.addURI(AUTHORITY, OBJECT_LIST_STR, OBJECT_LIST_ID);
        sUriMatcher.addURI(AUTHORITY, OBJECT_STR, OBJECT_ID);
    }
И как сделать, что бы задать запросы, например, вида: .....?Id=123456