You are on page 1of 26

Content Providers in Android

● Overall structure
● Interaction with Content Provider
● Constructing query
● URI'S
● Provider permissions
● Creating Content Provider
● Questions
● Overall structure
● Interaction with Content Provider
● Constructing query
● URI'S
● Provider permissions
● Creating Content Provider
● Questions
Overall structure
Application #2
Application #1
Activity #1
Activity #1

Activity #2 Content Provider Application #3

Activity #3 Activity #1

Activity #2

Remote
Database Files XML …
connection
Content Provider is a source
Application #2
Application #1
Activity #1
Activity #1

Activity #2 Content Provider Application #3

Activity #3 Activity #1

Activity #2

Remote
Database Files XML …
connection
For some consumers
Application #2
Application #1
Activity #1
Activity #1

Activity #2 Content Provider Application #3

Activity #3 Activity #1

Activity #2

Remote
Database Files XML …
connection
Gives access to variety types of data
Application #2
Application #1
Activity #1
Activity #1

Activity #2 Content Provider Application #3

Activity #3 Activity #1

Activity #2

Remote
Database Files XML …
connection
Overall structure
Application #2
Application #1
Activity #1
Activity #1

Activity #2 Content Provider Application #3

Activity #3 Activity #1

Activity #2

Remote
Database Files XML …
connection
● Overall structure
● Interaction with Content Provider
● Constructing query
● URI'S
● Provider permissions
● Creating Content Provider
● Questions
Interaction with Content Provider
Application #2
Application #1
Activity #1
Activity #1

Activity #2 Content Provider Application #3

Activity #3 Activity #1

Activity #2

Remote
Database Files XML …
connection
Activity to Content Provider access
Activity

Cursor ContentResolver Content Provider

CursorAdapter ListView
Activity
Activity

Cursor ContentResolver Content Provider

CursorAdapter ListView
Performing request

Content Provider

Query

Insert
ContentResolver URI
Update

Delete
URI

content://com.example.provider/articles

Scheme Authority Path


● Overall structure
● Interaction with Content Provider
● Constructing query
● URI'S
● Provider permissions
● Creating Content Provider
● Questions
Constructing query

SELECT _id, title, content, date


FROM articles
WHERE date >= 1352470000
ORDER BY date ASC
Constructing query
String[] mProjection =
{
"_id",
"title",
"content",
"date",
};
String mSelection = "date >= ?";
String[] mSelectionArgs = {"1352470000"};
String mSortOrder = "date ASC";
Cursor cursor = getContentResolver().query(
MyContentProvider.ARTICLES_CONTENT_URI,
mProjection,
mSelection,
mSelectionArgs,
mSortOrder);
Constructing query
String[] mProjection =
{
"_id",
"title",
"content",
"date",
};
String mSelection = "date >= ?";
String[] mSelectionArgs = {"1352470000"};
String mSortOrder = "date ASC";
Cursor cursor = getContentResolver().query(
MyContentProvider.ARTICLES_CONTENT_URI,
mProjection,
mSelection,
mSelectionArgs,
mSortOrder);
Constructing query
String[] mProjection =
{
"_id",
"title",
"content",
"date",
};
String mSelection = "date >= ?";
String[] mSelectionArgs = {"1352470000"};
String mSortOrder = "date ASC";
Cursor cursor = getContentResolver().query(
MyContentProvider.ARTICLES_CONTENT_URI,
mProjection,
mSelection,
mSelectionArgs,
mSortOrder);
Constructing query
String[] mProjection =
{
"_id",
"title",
"content",
"date",
};
String mSelection = "date >= ?";
String[] mSelectionArgs = {"1352470000"};
String mSortOrder = "date ASC";
Cursor cursor = getContentResolver().query(
MyContentProvider.ARTICLES_CONTENT_URI,
mProjection,
mSelection,
mSelectionArgs,
mSortOrder);
Constructing query
String[] mProjection =
{
"_id",
"title",
"content",
"date",
};
String mSelection = "date >= ?";
String[] mSelectionArgs = {"1352470000"};
String mSortOrder = "date ASC";
Cursor cursor = getContentResolver().query(
MyContentProvider.ARTICLES_CONTENT_URI,
mProjection,
mSelection,
mSelectionArgs,
mSortOrder);
Constructing query
String[] mProjection =
{
"_id",
"title",
"content",
"date",
};
String mSelection = "date >= ?";
String[] mSelectionArgs = {"1352470000"};
String mSortOrder = "date ASC";
Cursor cursor = getContentResolver().query(
MyContentProvider.ARTICLES_CONTENT_URI,
mProjection,
mSelection,
mSelectionArgs,
mSortOrder);
Cursor
_id title content date
1 First article Lorem ipsum... 1352475013
2 Second article Dolor sit amet... 1352471413
... ... ... ...

if (mCursor != null) {
while (mCursor.moveToNext()) {
String title = mCursor.getString(Columns.TITLE);
}
}
● Overall structure
● Interaction with Content Provider
● Constructing query
● URI'S
● Provider permissions
● Creating Content Provider
● Questions
URI’S

CONTENT
URI
TYPE
contacts ContactsContract.Contacts.CONTENT_URI;
messages Uri uri = Uri.parse("content://sms/inbox");
audio MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
video MediaStore.Video.Media.EXTERNAL_CONTENT_URI
images MediaStore.Images.Media.EXTERNAL_CONTENT_URI
call logs android.provider.CallLog.Calls.CONTENT_URI
android.provider.CalendarContracts.Calendar.CONTENT_
calendar
URI
settings android.provider.Settings.System.CONTENT_URI
dictionary android.provider.UserDictionary.Words.CONTENT_URI
Questions

Thank you!

You might also like