SliceProvider
abstract classSliceProvider: ContentProvider
kotlin.Any | ||
↳ | android.content.ContentProvider | |
↳ | android.app.slice.SliceProvider |
A SliceProvider allows an app to provide content to be displayed in system spaces. This content is templated and can contain actions, and the behavior of how it is surfaced is specific to the system surface.
Slices are not currently live content. They are bound once and shown to the user. If the content changes due to a callback from user interaction, then ContentResolver.notifyChange(Uri, ContentObserver)
should be used to notify the system.
The provider needs to be declared in the manifest to provide the authority for the app. The authority for most slices is expected to match the package of the application.
<provider android:name="com.example.mypkg.MySliceProvider" android:authorities="com.example.mypkg" />
Slices can be identified by a Uri or by an Intent. To link an Intent with a slice, the provider must have an IntentFilter
matching the slice intent. When a slice is being requested via an intent, onMapIntentToUri(android.content.Intent)
can be called and is expected to return an appropriate Uri representing the slice.
<provider android:name="com.example.mypkg.MySliceProvider" android:authorities="com.example.mypkg"> <intent-filter> <action android:name="com.example.mypkg.intent.action.MY_SLICE_INTENT" /> <category android:name="android.app.slice.category.SLICE" /> </intent-filter> </provider>
Summary
Constants | |
---|---|
static String |
This is the Android platform's MIME type for a URI containing a slice implemented through |
Inherited constants | |
---|---|
Public constructors | |
---|---|
SliceProvider(vararg autoGrantPermissions: String!) A version of constructing a SliceProvider that allows autogranting slice permissions to apps that hold specific platform permissions. |
Public methods | |
---|---|
open Unit |
attachInfo(context: Context!, info: ProviderInfo!) |
open Bundle? | |
Int | |
String? | |
Uri? |
insert(uri: Uri, values: ContentValues?) |
open Slice! |
onBindSlice(sliceUri: Uri!, supportedSpecs: MutableSet<SliceSpec!>!) Implemented to create a slice. |
open PendingIntent |
onCreatePermissionRequest(sliceUri: Uri!) Called when an app requests a slice it does not have write permission to the uri for. |
open MutableCollection<Uri!> |
onGetSliceDescendants(uri: Uri) Obtains a list of slices that are descendants of the specified Uri. |
open Uri |
onMapIntentToUri(intent: Intent!) This method must be overridden if an |
open Unit |
onSlicePinned(sliceUri: Uri!) Called to inform an app that a slice has been pinned. |
open Unit |
onSliceUnpinned(sliceUri: Uri!) Called to inform an app that a slices is no longer pinned. |
Cursor? | |
Cursor? | |
Cursor? | |
Int |
Inherited functions | |
---|---|
Constants
SLICE_TYPE
static valSLICE_TYPE: String
Deprecated: Deprecated in Java.
This is the Android platform's MIME type for a URI containing a slice implemented through SliceProvider
.
Value: "vnd.android.slice"
Public constructors
SliceProvider
SliceProvider(vararg autoGrantPermissions: String!)
A version of constructing a SliceProvider that allows autogranting slice permissions to apps that hold specific platform permissions.
When an app tries to bind a slice from this provider that it does not have access to, This provider will check if the caller holds permissions to any of the autoGrantPermissions specified, if they do they will be granted persisted uri access to all slices of this provider.
Parameters | |
---|---|
autoGrantPermissions |
String!: List of permissions that holders are auto-granted access to slices. This value cannot be null . |
Public methods
attachInfo
open funattachInfo(
context: Context!,
info: ProviderInfo!
): Unit
Deprecated: Deprecated in Java.
Parameters | |
---|---|
context |
Context!: The context this provider is running in |
info |
ProviderInfo!: Registered information about this content provider |
call
open funcall(
method: String,
arg: String?,
extras: Bundle?
): Bundle?
Deprecated: Deprecated in Java.
Parameters | |
---|---|
method |
String: This value cannot be null . |
arg |
String?: This value may be null . |
extras |
Bundle?: This value may be null . |
Return | |
---|---|
Bundle? |
This value may be null . |
delete
fundelete(
uri: Uri,
selection: String?,
selectionArgs: Array<String!>?
): Int
Deprecated: Deprecated in Java.
Parameters | |
---|---|
uri |
Uri: The full URI to query, including a row ID (if a specific record is requested). This value cannot be null . |
selection |
String?: An optional restriction to apply to rows when deleting. This value may be null . |
selectionArgs |
Array<String!>?: This value may be null . |
Return | |
---|---|
Int |
The number of rows affected. |
Exceptions | |
---|---|
android.database.SQLException |
getType
fungetType(uri: Uri): String?
Deprecated: Deprecated in Java.
Parameters | |
---|---|
uri |
Uri: the URI to query. This value cannot be null . |
Return | |
---|---|
String? |
a MIME type string, or null if there is no type. |
insert
funinsert(
uri: Uri,
values: ContentValues?
): Uri?
Deprecated: Deprecated in Java.
Parameters | |
---|---|
uri |
Uri: The content:// URI of the insertion request. This value cannot be null . |
values |
ContentValues?: A set of column_name/value pairs to add to the database. This value may be null . |
Return | |
---|---|
Uri? |
The URI for the newly inserted item. This value may be null . |
onBindSlice
open funonBindSlice(
sliceUri: Uri!,
supportedSpecs: MutableSet<SliceSpec!>!
): Slice!
Deprecated: Deprecated in Java.
Implemented to create a slice.
onBindSlice should return as quickly as possible so that the UI tied to this slice can be responsive. No network or other IO will be allowed during onBindSlice. Any loading that needs to be done should happen in the background with a call to ContentResolver.notifyChange(Uri, ContentObserver)
when the app is ready to provide the complete data in onBindSlice.
The slice returned should have a spec that is compatible with one of the supported specs.
Parameters | |
---|---|
sliceUri |
Uri!: Uri to bind. |
supportedSpecs |
MutableSet<SliceSpec!>!: List of supported specs. |
onCreatePermissionRequest
open funonCreatePermissionRequest(sliceUri: Uri!): PendingIntent
Deprecated: Deprecated in Java.
Called when an app requests a slice it does not have write permission to the uri for.
The return value will be the action on a slice that prompts the user that the calling app wants to show slices from this app. The default implementation launches a dialog that allows the user to grant access to this slice. Apps that do not want to allow this user grant, can override this and instead launch their own dialog with different behavior.
Parameters | |
---|---|
sliceUri |
Uri!: the Uri of the slice attempting to be bound. |
Return | |
---|---|
PendingIntent |
This value cannot be null . |
See Also
onGetSliceDescendants
open funonGetSliceDescendants(uri: Uri): MutableCollection<Uri!>
Deprecated: Deprecated in Java.
Obtains a list of slices that are descendants of the specified Uri.
Implementing this is optional for a SliceProvider, but does provide a good discovery mechanism for finding slice Uris.
Parameters | |
---|---|
uri |
Uri: The uri to look for descendants under. This value cannot be null . |
Return | |
---|---|
MutableCollection<Uri!> |
All slices within the space. This value cannot be null . |
onMapIntentToUri
open funonMapIntentToUri(intent: Intent!): Uri
Deprecated: Deprecated in Java.
This method must be overridden if an IntentFilter
is specified on the SliceProvider. In that case, this method can be called and is expected to return a non-null Uri representing a slice. Otherwise this will throw UnsupportedOperationException
. Any intent filter added to a slice provider should also contain SliceManager.CATEGORY_SLICE
, because otherwise it will not be detected by SliceManager.mapIntentToUri(Intent)
.
Return | |
---|---|
Uri |
Uri representing the slice associated with the provided intent. |
onSlicePinned
open funonSlicePinned(sliceUri: Uri!): Unit
Deprecated: Deprecated in Java.
Called to inform an app that a slice has been pinned.
Pinning is a way that slice hosts use to notify apps of which slices they care about updates for. When a slice is pinned the content is expected to be relatively fresh and kept up to date.
Being pinned does not provide any escalated privileges for the slice provider. So apps should do things such as turn on syncing or schedule a job in response to a onSlicePinned.
Pinned state is not persisted through a reboot, and apps can expect a new call to onSlicePinned for any slices that should remain pinned after a reboot occurs.
Parameters | |
---|---|
sliceUri |
Uri!: The uri of the slice being unpinned. |
See Also
onSliceUnpinned
open funonSliceUnpinned(sliceUri: Uri!): Unit
Deprecated: Deprecated in Java.
Called to inform an app that a slices is no longer pinned.
This means that no other apps on the device care about updates to this slice anymore and therefore it is not important to be updated. Any syncs or jobs related to this slice should be cancelled.
See Also
query
funquery(
uri: Uri,
projection: Array<String!>?,
queryArgs: Bundle?,
cancellationSignal: CancellationSignal?
): Cursor?
Deprecated: Deprecated in Java.
Parameters | |
---|---|
uri |
Uri: The URI to query. This will be the full URI sent by the client. This value cannot be null . |
projection |
Array<String!>?: The list of columns to put into the cursor. If null provide a default set of columns. |
queryArgs |
Bundle?: A Bundle containing additional information necessary for the operation. Arguments may include SQL style arguments, such as ContentResolver.QUERY_ARG_SQL_LIMIT , but note that the documentation for each individual provider will indicate which arguments they support. This value may be null . |
cancellationSignal |
CancellationSignal?: A signal to cancel the operation in progress, or null . |
Return | |
---|---|
Cursor? |
a Cursor or null . |
query
funquery(
uri: Uri,
projection: Array<String!>?,
selection: String?,
selectionArgs: Array<String!>?,
sortOrder: String?
): Cursor?
Deprecated: Deprecated in Java.
Parameters | |
---|---|
uri |
Uri: The URI to query. This will be the full URI sent by the client; if the client is requesting a specific record, the URI will end in a record number that the implementation should parse and add to a WHERE or HAVING clause, specifying that _id value. This value cannot be null . |
projection |
Array<String!>?: The list of columns to put into the cursor. If null all columns are included. |
selection |
String?: A selection criteria to apply when filtering rows. If null then all rows are included. |
selectionArgs |
Array<String!>?: You may include ?s in selection, which will be replaced by the values from selectionArgs, in order that they appear in the selection. The values will be bound as Strings. This value may be null . |
sortOrder |
String?: How the rows in the cursor should be sorted. If null then the provider is free to define the sort order. |
Return | |
---|---|
Cursor? |
a Cursor or null . |
query
funquery(
uri: Uri,
projection: Array<String!>?,
selection: String?,
selectionArgs: Array<String!>?,
sortOrder: String?,
cancellationSignal: CancellationSignal?
): Cursor?
Deprecated: Deprecated in Java.
Parameters | |
---|---|
uri |
Uri: The URI to query. This will be the full URI sent by the client; if the client is requesting a specific record, the URI will end in a record number that the implementation should parse and add to a WHERE or HAVING clause, specifying that _id value. This value cannot be null . |
projection |
Array<String!>?: The list of columns to put into the cursor. If null all columns are included. |
selection |
String?: A selection criteria to apply when filtering rows. If null then all rows are included. |
selectionArgs |
Array<String!>?: You may include ?s in selection, which will be replaced by the values from selectionArgs, in order that they appear in the selection. The values will be bound as Strings. This value may be null . |
sortOrder |
String?: How the rows in the cursor should be sorted. If null then the provider is free to define the sort order. |
cancellationSignal |
CancellationSignal?: A signal to cancel the operation in progress, or null if none. If the operation is canceled, then android.os.OperationCanceledException will be thrown when the query is executed. |
Return | |
---|---|
Cursor? |
a Cursor or null . |
update
funupdate(
uri: Uri,
values: ContentValues?,
selection: String?,
selectionArgs: Array<String!>?
): Int
Deprecated: Deprecated in Java.
Parameters | |
---|---|
uri |
Uri: The URI to query. This can potentially have a record ID if this is an update request for a specific record. This value cannot be null . |
values |
ContentValues?: A set of column_name/value pairs to update in the database. This value may be null . |
selection |
String?: An optional filter to match rows to update. This value may be null . |
selectionArgs |
Array<String!>?: This value may be null . |
Return | |
---|---|
Int |
the number of rows affected. |