public abstract class

ContentResolver

extends Object
java.lang.Object
   ↳ android.content.ContentResolver
Known Direct Subclasses

Class Overview

This class provides applications access to the content model.

Summary

Constants
String CURSOR_DIR_BASE_TYPE This is the Android platform's base MIME type for a content: URI containing a Cursor of zero or more items.
String CURSOR_ITEM_BASE_TYPE This is the Android platform's base MIME type for a content: URI containing a Cursor of a single item.
String SCHEME_ANDROID_RESOURCE
String SCHEME_CONTENT
String SCHEME_FILE
String SYNC_EXTRAS_ACCOUNT This constant is deprecated. instead use requestSync(android.accounts.Account, String, android.os.Bundle)
String SYNC_EXTRAS_DISCARD_LOCAL_DELETIONS
String SYNC_EXTRAS_EXPEDITED
String SYNC_EXTRAS_FORCE This constant is deprecated. instead use SYNC_EXTRAS_MANUAL
String SYNC_EXTRAS_INITIALIZE Set by the SyncManager to request that the SyncAdapter initialize itself for the given account/authority pair.
String SYNC_EXTRAS_MANUAL
String SYNC_EXTRAS_OVERRIDE_TOO_MANY_DELETIONS
String SYNC_EXTRAS_UPLOAD
Public Constructors
ContentResolver(Context context)
Public Methods
final ContentProviderClient acquireContentProviderClient(Uri uri)
Returns a ContentProviderClient that is associated with the ContentProvider that services the content at uri, starting the provider if necessary.
final ContentProviderClient acquireContentProviderClient(String name)
Returns a ContentProviderClient that is associated with the ContentProvider with the authority of name, starting the provider if necessary.
static Object addStatusChangeListener(int mask, SyncStatusObserver callback)
ContentProviderResult[] applyBatch(String authority, ArrayList<ContentProviderOperation> operations)
Applies each of the ContentProviderOperation objects and returns an array of their results.
final int bulkInsert(Uri url, ContentValues[] values)
Inserts multiple rows into a table at the given URL.
void cancelSync(Uri uri)
This method is deprecated. instead use cancelSync(android.accounts.Account, String)
static void cancelSync(Account account, String authority)
Cancel any active or pending syncs that match account and authority.
final int delete(Uri url, String where, String[] selectionArgs)
Deletes row(s) specified by a content URI.
static int getIsSyncable(Account account, String authority)
Check if this account/provider is syncable.
static boolean getMasterSyncAutomatically()
Gets the master auto-sync setting that applies to all the providers and accounts.
static SyncAdapterType[] getSyncAdapterTypes()
Get information about the SyncAdapters that are known to the system.
static boolean getSyncAutomatically(Account account, String authority)
Check if the provider should be synced when a network tickle is received
final String getType(Uri url)
Return the MIME type of the given content URL.
final Uri insert(Uri url, ContentValues values)
Inserts a row into a table at the given URL.
static boolean isSyncActive(Account account, String authority)
Returns true if there is currently a sync operation for the given account or authority in the pending list, or actively being processed.
static boolean isSyncPending(Account account, String authority)
Return true if the pending status is true of any matching authorities.
void notifyChange(Uri uri, ContentObserver observer)
Notify registered observers that a row was updated.
void notifyChange(Uri uri, ContentObserver observer, boolean syncToNetwork)
Notify registered observers that a row was updated.
final AssetFileDescriptor openAssetFileDescriptor(Uri uri, String mode)
Open a raw file descriptor to access data under a "content:" URI.
final ParcelFileDescriptor openFileDescriptor(Uri uri, String mode)
Open a raw file descriptor to access data under a "content:" URI.
final InputStream openInputStream(Uri uri)
Open a stream on to the content associated with a content URI.
final OutputStream openOutputStream(Uri uri)
final OutputStream openOutputStream(Uri uri, String mode)
Open a stream on to the content associated with a content URI.
final Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
Query the given URI, returning a Cursor over the result set.
final void registerContentObserver(Uri uri, boolean notifyForDescendents, ContentObserver observer)
Register an observer class that gets callbacks when data identified by a given content URI changes.
static void removeStatusChangeListener(Object handle)
static void requestSync(Account account, String authority, Bundle extras)
Start an asynchronous sync operation.
static void setIsSyncable(Account account, String authority, int syncable)
Set whether this account/provider is syncable.
static void setMasterSyncAutomatically(boolean sync)
Sets the master auto-sync setting that applies to all the providers and accounts.
static void setSyncAutomatically(Account account, String authority, boolean sync)
Set whether or not the provider is synced when it receives a network tickle.
void startSync(Uri uri, Bundle extras)
final void unregisterContentObserver(ContentObserver observer)
Unregisters a change observer.
final int update(Uri uri, ContentValues values, String where, String[] selectionArgs)
Update row(s) in a content URI.
static void validateSyncExtrasBundle(Bundle extras)
Check that only values of the following types are in the Bundle:
  • Integer
  • Long
  • Boolean
  • Float
  • Double
  • String
  • Account
  • null
[Expand]
Inherited Methods
From class java.lang.Object

Constants

public static final String CURSOR_DIR_BASE_TYPE

Since: API Level 1

This is the Android platform's base MIME type for a content: URI containing a Cursor of zero or more items. Applications should use this as the base type along with their own sub-type of their content: URIs that represent a directory of items. For example, hypothetical IMAP email client may have a URI content://com.company.provider.imap/inbox for all of the messages in its inbox, whose MIME type would be reported as CURSOR_DIR_BASE_TYPE + "/vnd.company.imap-msg"

Note how the base MIME type varies between this and CURSOR_ITEM_BASE_TYPE depending on whether there is one single item or multiple items in the data set, while the sub-type remains the same because in either case the data structure contained in the cursor is the same.

Constant Value: "vnd.android.cursor.dir"

public static final String CURSOR_ITEM_BASE_TYPE

Since: API Level 1

This is the Android platform's base MIME type for a content: URI containing a Cursor of a single item. Applications should use this as the base type along with their own sub-type of their content: URIs that represent a particular item. For example, hypothetical IMAP email client may have a URI content://com.company.provider.imap/inbox/1 for a particular message in the inbox, whose MIME type would be reported as CURSOR_ITEM_BASE_TYPE + "/vnd.company.imap-msg"

Compare with CURSOR_DIR_BASE_TYPE.

Constant Value: "vnd.android.cursor.item"

public static final String SCHEME_ANDROID_RESOURCE

Since: API Level 1

Constant Value: "android.resource"

public static final String SCHEME_CONTENT

Since: API Level 1

Constant Value: "content"

public static final String SCHEME_FILE

Since: API Level 1

Constant Value: "file"

public static final String SYNC_EXTRAS_ACCOUNT

Since: API Level 1

This constant is deprecated.
instead use requestSync(android.accounts.Account, String, android.os.Bundle)

Constant Value: "account"

public static final String SYNC_EXTRAS_DISCARD_LOCAL_DELETIONS

Since: API Level 1

Constant Value: "discard_deletions"

public static final String SYNC_EXTRAS_EXPEDITED

Since: API Level 1

Constant Value: "expedited"

public static final String SYNC_EXTRAS_FORCE

Since: API Level 1

This constant is deprecated.
instead use SYNC_EXTRAS_MANUAL

Constant Value: "force"

public static final String SYNC_EXTRAS_INITIALIZE

Since: API Level 5

Set by the SyncManager to request that the SyncAdapter initialize itself for the given account/authority pair. One required initialization step is to ensure that setIsSyncable(android.accounts.Account, String, int) has been called with a >= 0 value. When this flag is set the SyncAdapter does not need to do a full sync, though it is allowed to do so.

Constant Value: "initialize"

public static final String SYNC_EXTRAS_MANUAL

Since: API Level 5

Constant Value: "force"

public static final String SYNC_EXTRAS_OVERRIDE_TOO_MANY_DELETIONS

Since: API Level 1

Constant Value: "deletions_override"

public static final String SYNC_EXTRAS_UPLOAD

Since: API Level 1

Constant Value: "upload"

Public Constructors

public ContentResolver (Context context)

Since: API Level 1

Public Methods

public final ContentProviderClient acquireContentProviderClient (Uri uri)

Since: API Level 5

Returns a ContentProviderClient that is associated with the ContentProvider that services the content at uri, starting the provider if necessary. Returns null if there is no provider associated wih the uri. The caller must indicate that they are done with the provider by calling release() which will allow the system to release the provider it it determines that there is no other reason for keeping it active.

Parameters
uri specifies which provider should be acquired
Returns

public final ContentProviderClient acquireContentProviderClient (String name)

Since: API Level 5

Returns a ContentProviderClient that is associated with the ContentProvider with the authority of name, starting the provider if necessary. Returns null if there is no provider associated wih the uri. The caller must indicate that they are done with the provider by calling release() which will allow the system to release the provider it it determines that there is no other reason for keeping it active.

Parameters
name specifies which provider should be acquired
Returns

public static Object addStatusChangeListener (int mask, SyncStatusObserver callback)

Since: API Level 5

public ContentProviderResult[] applyBatch (String authority, ArrayList<ContentProviderOperation> operations)

Since: API Level 5

Applies each of the ContentProviderOperation objects and returns an array of their results. Passes through OperationApplicationException, which may be thrown by the call to apply(ContentProvider, ContentProviderResult[], int). If all the applications succeed then a ContentProviderResult array with the same number of elements as the operations will be returned. It is implementation-specific how many, if any, operations will have been successfully applied if a call to apply results in a OperationApplicationException.

Parameters
authority the authority of the ContentProvider to which this batch should be applied
operations the operations to apply
Returns
  • the results of the applications
Throws
OperationApplicationException thrown if an application fails. See apply(ContentProvider, ContentProviderResult[], int) for more information.
RemoteException thrown if a RemoteException is encountered while attempting to communicate with a remote provider.

public final int bulkInsert (Uri url, ContentValues[] values)

Since: API Level 1

Inserts multiple rows into a table at the given URL. This function make no guarantees about the atomicity of the insertions.

Parameters
url The URL of the table to insert into.
values The initial values for the newly inserted rows. The key is the column name for the field. Passing null will create an empty row.
Returns
  • the number of newly created rows.

public void cancelSync (Uri uri)

Since: API Level 1

This method is deprecated.
instead use cancelSync(android.accounts.Account, String)

Cancel any active or pending syncs that match the Uri. If the uri is null then all syncs will be canceled.

Parameters
uri the uri of the provider to sync or null to sync all providers.

public static void cancelSync (Account account, String authority)

Since: API Level 5

Cancel any active or pending syncs that match account and authority. The account and authority can each independently be set to null, which means that syncs with any account or authority, respectively, will match.

Parameters
account filters the syncs that match by this account
authority filters the syncs that match by this authority

public final int delete (Uri url, String where, String[] selectionArgs)

Since: API Level 1

Deletes row(s) specified by a content URI. If the content provider supports transactions, the deletion will be atomic.

Parameters
url The URL of the row to delete.
where A filter to apply to rows before deleting, formatted as an SQL WHERE clause (excluding the WHERE itself).
Returns
  • The number of rows deleted.

public static int getIsSyncable (Account account, String authority)

Since: API Level 5

Check if this account/provider is syncable.

Returns
  • >0 if it is syncable, 0 if not, and <0 if the state isn't known yet.

public static boolean getMasterSyncAutomatically ()

Since: API Level 5

Gets the master auto-sync setting that applies to all the providers and accounts. If this is false then the per-provider auto-sync setting is ignored.

Returns
  • the master auto-sync setting that applies to all the providers and accounts

public static SyncAdapterType[] getSyncAdapterTypes ()

Since: API Level 5

Get information about the SyncAdapters that are known to the system.

Returns
  • an array of SyncAdapters that have registered with the system

public static boolean getSyncAutomatically (Account account, String authority)

Since: API Level 5

Check if the provider should be synced when a network tickle is received

Parameters
account the account whose setting we are querying
authority the provider whose setting we are querying
Returns
  • true if the provider should be synced when a network tickle is received

public final String getType (Uri url)

Since: API Level 1

Return the MIME type of the given content URL.

Parameters
url A Uri identifying content (either a list or specific type), using the content:// scheme.
Returns
  • A MIME type for the content, or null if the URL is invalid or the type is unknown

public final Uri insert (Uri url, ContentValues values)

Since: API Level 1

Inserts a row into a table at the given URL. If the content provider supports transactions the insertion will be atomic.

Parameters
url The URL of the table to insert into.
values The initial values for the newly inserted row. The key is the column name for the field. Passing an empty ContentValues will create an empty row.
Returns
  • the URL of the newly created row.

public static boolean isSyncActive (Account account, String authority)

Since: API Level 5

Returns true if there is currently a sync operation for the given account or authority in the pending list, or actively being processed.

Parameters
account the account whose setting we are querying
authority the provider whose behavior is being queried
Returns
  • true if a sync is active for the given account or authority.

public static boolean isSyncPending (Account account, String authority)

Since: API Level 5

Return true if the pending status is true of any matching authorities.

Parameters
account the account whose setting we are querying
authority the provider whose behavior is being queried
Returns
  • true if there is a pending sync with the matching account and authority

public void notifyChange (Uri uri, ContentObserver observer)

Since: API Level 1

Notify registered observers that a row was updated. To register, call registerContentObserver(). By default, CursorAdapter objects will get this notification.

Parameters
observer The observer that originated the change, may be null

public void notifyChange (Uri uri, ContentObserver observer, boolean syncToNetwork)

Since: API Level 1

Notify registered observers that a row was updated. To register, call registerContentObserver(). By default, CursorAdapter objects will get this notification.

Parameters
observer The observer that originated the change, may be null
syncToNetwork If true, attempt to sync the change to the network.

public final AssetFileDescriptor openAssetFileDescriptor (Uri uri, String mode)

Since: API Level 3

Open a raw file descriptor to access data under a "content:" URI. This interacts with the underlying openAssetFile(Uri, String) ContentProvider.openAssetFile()} method of the provider associated with the given URI, to retrieve any file stored there.

Accepts the following URI schemes:
The android.resource (SCHEME_ANDROID_RESOURCE) Scheme

A Uri object can be used to reference a resource in an APK file. The Uri should be one of the following formats:

  • android.resource://package_name/id_number
    package_name is your package name as listed in your AndroidManifest.xml. For example com.example.myapp
    id_number is the int form of the ID.
    The easiest way to construct this form is
    Uri uri = Uri.parse("android.resource://com.example.myapp/" + R.raw.my_resource");
  • android.resource://package_name/type/name
    package_name is your package name as listed in your AndroidManifest.xml. For example com.example.myapp
    type is the string form of the resource type. For example, raw or drawable. name is the string form of the resource name. That is, whatever the file name was in your res directory, without the type extension. The easiest way to construct this form is
    Uri uri = Uri.parse("android.resource://com.example.myapp/raw/my_resource");

Parameters
uri The desired URI to open.
mode The file mode to use, as per ContentProvider.openAssetFile.
Returns
  • Returns a new ParcelFileDescriptor pointing to the file. You own this descriptor and are responsible for closing it when done.
Throws
FileNotFoundException Throws FileNotFoundException of no file exists under the URI or the mode is invalid.

public final ParcelFileDescriptor openFileDescriptor (Uri uri, String mode)

Since: API Level 1

Open a raw file descriptor to access data under a "content:" URI. This is like openAssetFileDescriptor(Uri, String), but uses the underlying openFile(Uri, String) ContentProvider.openFile()} method, so will not work with providers that return sub-sections of files. If at all possible, you should use openAssetFileDescriptor(Uri, String). You will receive a FileNotFoundException exception if the provider returns a sub-section of a file.

Accepts the following URI schemes:

See openAssetFileDescriptor(Uri, String) for more information on these schemes.

Parameters
uri The desired URI to open.
mode The file mode to use, as per ContentProvider.openFile.
Returns
  • Returns a new ParcelFileDescriptor pointing to the file. You own this descriptor and are responsible for closing it when done.
Throws
FileNotFoundException Throws FileNotFoundException of no file exists under the URI or the mode is invalid.

public final InputStream openInputStream (Uri uri)

Since: API Level 1

Open a stream on to the content associated with a content URI. If there is no data associated with the URI, FileNotFoundException is thrown.

Accepts the following URI schemes:

See openAssetFileDescriptor(Uri, String) for more information on these schemes.

Parameters
uri The desired URI.
Returns
  • InputStream
Throws
FileNotFoundException if the provided URI could not be opened.

public final OutputStream openOutputStream (Uri uri)

Since: API Level 1
Throws
FileNotFoundException if the provided URI could not be opened.

public final OutputStream openOutputStream (Uri uri, String mode)

Since: API Level 3

Open a stream on to the content associated with a content URI. If there is no data associated with the URI, FileNotFoundException is thrown.

Accepts the following URI schemes:

See openAssetFileDescriptor(Uri, String) for more information on these schemes.

Parameters
uri The desired URI.
mode May be "w", "wa", "rw", or "rwt".
Returns
  • OutputStream
Throws
FileNotFoundException if the provided URI could not be opened.

public final Cursor query (Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)

Since: API Level 1

Query the given URI, returning a Cursor over the result set.

Parameters
uri The URI, using the content:// scheme, for the content to retrieve.
projection A list of which columns to return. Passing null will return all columns, which is discouraged to prevent reading data from storage that isn't going to be used.
selection A filter declaring which rows to return, formatted as an SQL WHERE clause (excluding the WHERE itself). Passing null will return all rows for the given URI.
selectionArgs You may include ?s in selection, which will be replaced by the values from selectionArgs, in the order that they appear in the selection. The values will be bound as Strings.
sortOrder How to order the rows, formatted as an SQL ORDER BY clause (excluding the ORDER BY itself). Passing null will use the default sort order, which may be unordered.
Returns
  • A Cursor object, which is positioned before the first entry, or null
See Also

public final void registerContentObserver (Uri uri, boolean notifyForDescendents, ContentObserver observer)

Since: API Level 1

Register an observer class that gets callbacks when data identified by a given content URI changes.

Parameters
uri The URI to watch for changes. This can be a specific row URI, or a base URI for a whole class of content.
notifyForDescendents If true changes to URIs beginning with uri will also cause notifications to be sent. If false only changes to the exact URI specified by uri will cause notifications to be sent. If true, than any URI values at or below the specified URI will also trigger a match.
observer The object that receives callbacks when changes occur.

public static void removeStatusChangeListener (Object handle)

Since: API Level 5

public static void requestSync (Account account, String authority, Bundle extras)

Since: API Level 5

Start an asynchronous sync operation. If you want to monitor the progress of the sync you may register a SyncObserver. Only values of the following types may be used in the extras bundle:

  • Integer
  • Long
  • Boolean
  • Float
  • Double
  • String

Parameters
account which account should be synced
authority which authority should be synced
extras any extras to pass to the SyncAdapter.

public static void setIsSyncable (Account account, String authority, int syncable)

Since: API Level 5

Set whether this account/provider is syncable.

Parameters
syncable >0 denotes syncable, 0 means not syncable, <0 means unknown

public static void setMasterSyncAutomatically (boolean sync)

Since: API Level 5

Sets the master auto-sync setting that applies to all the providers and accounts. If this is false then the per-provider auto-sync setting is ignored.

Parameters
sync the master auto-sync setting that applies to all the providers and accounts

public static void setSyncAutomatically (Account account, String authority, boolean sync)

Since: API Level 5

Set whether or not the provider is synced when it receives a network tickle.

Parameters
account the account whose setting we are querying
authority the provider whose behavior is being controlled
sync true if the provider should be synced when tickles are received for it

public void startSync (Uri uri, Bundle extras)

Since: API Level 1

This method is deprecated.
instead use requestSync(android.accounts.Account, String, android.os.Bundle)

Start an asynchronous sync operation. If you want to monitor the progress of the sync you may register a SyncObserver. Only values of the following types may be used in the extras bundle:

  • Integer
  • Long
  • Boolean
  • Float
  • Double
  • String

Parameters
uri the uri of the provider to sync or null to sync all providers.
extras any extras to pass to the SyncAdapter.

public final void unregisterContentObserver (ContentObserver observer)

Since: API Level 1

Unregisters a change observer.

Parameters
observer The previously registered observer that is no longer needed.

public final int update (Uri uri, ContentValues values, String where, String[] selectionArgs)

Since: API Level 1

Update row(s) in a content URI. If the content provider supports transactions the update will be atomic.

Parameters
uri The URI to modify.
values The new field values. The key is the column name for the field. A null value will remove an existing field value.
where A filter to apply to rows before deleting, formatted as an SQL WHERE clause (excluding the WHERE itself).
Returns
  • The number of rows updated.
Throws
NullPointerException if uri or values are null

public static void validateSyncExtrasBundle (Bundle extras)

Since: API Level 1

Check that only values of the following types are in the Bundle:

  • Integer
  • Long
  • Boolean
  • Float
  • Double
  • String
  • Account
  • null

Parameters
extras the Bundle to check