Dzięki Dzakus,
odnośnie ContentProvider nie wiem czy dobrze rozumiem znaczenie UriMatcher, klasa ta głównie pomaga w tłumaczeniu adresów URI na wartości Int ?
Dla przykładu jeśli mamy taki fragment kodu:
static final String PROVIDER_NAME =
"com.example.provider.Books";
static final Uri CONTENT_URI =
Uri.parse ("content://"+ PROVIDER_NAME + "/books");
static final String _ID = "_id";
static final String TITLE = "title";
static final String ISBN = "isbn";
static final int BOOKS = 1;
static final int BOOK_ID = 2;
private static final UriMatcher uriMatcher;
static{
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
uriMatcher.addURI(PROVIDER_NAME, "books", BOOKS);
uriMatcher.addURI(PROVIDER_NAME, "books/#", BOOK_ID);
}
Głównie chodzi o blok static na końcu.
Czy wszystkie adresy tłumaczone w ten sposób
uriMatcher.match(argURI)
oznaczają konkretne nadane im wartości typu int ?
Czy środkowy parametr definiuje jak kończy się podany URI czyli w tym przypadku wszystkie z końcówką "books" mają identyfikator 1, a wszystkie z końcówką "books/[dowolna liczba calkowita]" posiadają identyfikator 2 ?
I jeszcze jedna rzecz bo spotkałem się z zagnieżdżaniem tych adresów URI, więc jeżeli mamy kilka tabel to dla nich przykładowe adresy nadajemy osobno np.
static final Uri CONTENT_URI =
Uri.parse ("content://"+ PROVIDER_NAME + "/people");
static final Uri CONTENT_URI =
Uri.parse ("content://"+ PROVIDER_NAME + "/books");
czy w taki sposób wyglądający na jakąś strukturę zagnieżdżoną:
static final Uri CONTENT_URI =
Uri.parse ("content://"+ PROVIDER_NAME + "/people/books");