UI Code is directory interacting with database
CatalogActivity ->
EditorActivity -> Content Provider -> PetDbHelper (Pet with ID 1 has weight 7)
Manage access to a structured set of data
-good abstraction layer between data source & UI code (can add data validation, can modify how data is stored UI code is unaffeted)
-work well with other Android framework classes
UI code
Catalog Activity, Content Resolver, Pet Provider, PetDbHelper SQLiteDatabase
Contacts provider
content://com.android.contacts/contacts
Calendar provider
content://com.android.calendar/events
User Dictionary provider
content://user_dictionary/words
Scheme, Content Authority, Type of data
content authority
<provider android:name=".data.PetProvider" android:authorities="com.example.android.pets" android:exported="false" />
int match = sUriMatcher.match(uri); if (match == CONTACTS){ // Act on the contacts table } else if (match == CONTACTS_ID){ // Act on a single contact in contacts table }
public class PetProvider extends ContentProvider { private static final int PETS = 100; private static final int PET_ID = 101; private static final UriMatcher sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH); static { sUriMatcher.addURI(PetContract.CONTENT_AUTHORITY, PetContract.PATH_PETS,PETS); sUriMatcher.addURI(PetContract.CONTENT_AUTHORITY,PetContract.PATH_PETS + ""/, PETS_ID); } ... }