2010-09-15 3 views
1

У меня есть два Uris. Предположим, что они являются:UriMatcher возвращает неправильное значение

content://myprovider/messages 
content://myprovider/messages/# 

В моей расширенной ContentProvider я заявил следующее:

private static final int MESSAGES = 1; 
    private static final int MESSAGES_ID = 2; 

    private static final UriMatcher sUriMatcher; 

    static { 
     sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH); 
     sUriMatcher.addURI("myprovider", "messages", MESSAGES); 
     sUriMatcher.addURI("myprovider", "messages/#", MESSAGES_ID); 
    } 

Когда я использую ...

content://myprovider/messages/# 

... Uri при вызове любой ContentProvider метод, скажем, вставить, и мой метод ContentProvider делает ...

sUriMatcher.match(uri) 

... и я возвращаюсь 1 (СООБЩЕНИЯ).

Почему ???

+0

Кто-нибудь? Кто-нибудь? :( – Andrew

ответ

1

Если вы хотите получить MESSAGES_ID, УИР должна быть написана как content://myprovider/messages/12345 или вы должны добавить шаблон для MESSAGES_ID как:

sUriMatcher.addURI("myprovider", "messages/*", MESSAGES_ID);