SliceViewManager
@RequiresApi(value = 19)
public abstract class SliceViewManager
Class to handle interactions with Slices.
The SliceViewManager manages permissions and pinned state for slices.
Summary
Nested types |
|---|
public interface SliceViewManager.SliceCallbackClass that listens to changes in |
Public methods |
|
|---|---|
abstract @Nullable Slice |
Turns a slice intent into slice content. |
abstract @Nullable Slice |
Turns a slice Uri into slice content. |
static @NonNull SliceViewManager |
getInstance(@NonNull Context context)Get a |
abstract @NonNull Collection<Uri> |
Obtains a list of slices that are descendants of the specified Uri. |
abstract @Nullable Uri |
mapIntentToUri(@NonNull Intent intent)Turns a slice intent into a slice uri. |
abstract void |
Ensures that a slice is in a pinned state. |
abstract void |
registerSliceCallback(Adds a callback to a specific slice uri. |
abstract void |
registerSliceCallback(Adds a callback to a specific slice uri. |
abstract void |
unpinSlice(@NonNull Uri uri)Remove a pin for a slice. |
abstract void |
unregisterSliceCallback(Removes a callback for a specific slice uri. |
Public methods
bindSlice
public abstract @Nullable Slice bindSlice(@NonNull Intent intent)
Turns a slice intent into slice content. Is a shortcut to perform the action of both mapIntentToUri and bindSlice at once.
| See also | |
|---|---|
Slice |
|
onMapIntentToUri |
|
Intent |
bindSlice
public abstract @Nullable Slice bindSlice(@NonNull Uri uri)
Turns a slice Uri into slice content.
| See also | |
|---|---|
Slice |
getInstance
public static @NonNull SliceViewManager getInstance(@NonNull Context context)
Get a SliceViewManager.
getSliceDescendants
@WorkerThread
public abstract @NonNull Collection<Uri> getSliceDescendants(@NonNull Uri uri)
Obtains a list of slices that are descendants of the specified Uri.
Not all slice providers will implement this functionality, in which case, an empty collection will be returned.
| Returns | |
|---|---|
@NonNull Collection<Uri> |
All slices within the space. |
| See also | |
|---|---|
onGetSliceDescendants |
mapIntentToUri
public abstract @Nullable Uri mapIntentToUri(@NonNull Intent intent)
Turns a slice intent into a slice uri. Expects an explicit intent.
This goes through a several stage resolution process to determine if any slice can represent this intent.
- If the intent contains data that
getTypeisSLICE_TYPEthen the data will be returned. - If the intent explicitly points at an activity, and that activity has meta-data for key
SLICE_METADATA_KEY, then the Uri specified there will be returned. - Lastly, if the intent with
CATEGORY_SLICEadded resolves to a provider, then the provider will be asked toonMapIntentToUriand that result will be returned. - If no slice is found, then
nullis returned.
| See also | |
|---|---|
Slice |
|
onMapIntentToUri |
|
Intent |
pinSlice
public abstract void pinSlice(@NonNull Uri uri)
Ensures that a slice is in a pinned state.
Pinned state is not persisted across reboots, so apps are expected to re-pin any slices they still care about after a reboot.
| See also | |
|---|---|
onSlicePinned |
registerSliceCallback
public abstract void registerSliceCallback(
@NonNull Uri uri,
@NonNull SliceViewManager.SliceCallback callback
)
Adds a callback to a specific slice uri.
This is a convenience method that performs a few slice actions at once. It will put the slice in a pinned state since there is a callback attached. It will also listen for content changes, when a content change is observed, the android system will bind the new slice and provide it to all registered SliceCallbacks.
This will not trigger a bindSlice immediately, it will only perform a bind and pass it to the callback after a change occurs. To avoid race conditions and missing data, callers should call bindSlice immediately after calling registerSliceCallback so that it has the current slice.
| Parameters | |
|---|---|
@NonNull Uri uri |
The uri of the slice being listened to. |
@NonNull SliceViewManager.SliceCallback callback |
The listener that should receive the callbacks. |
| See also | |
|---|---|
onSlicePinned |
registerSliceCallback
public abstract void registerSliceCallback(
@NonNull Uri uri,
@NonNull Executor executor,
@NonNull SliceViewManager.SliceCallback callback
)
Adds a callback to a specific slice uri.
This is a convenience that performs a few slice actions at once. It will put the slice in a pinned state since there is a callback attached. It will also listen for content changes, when a content change observes, the android system will bind the new slice and provide it to all registered SliceCallbacks.
| Parameters | |
|---|---|
@NonNull Uri uri |
The uri of the slice being listened to. |
@NonNull SliceViewManager.SliceCallback callback |
The listener that should receive the callbacks. |
| See also | |
|---|---|
onSlicePinned |
unpinSlice
public abstract void unpinSlice(@NonNull Uri uri)
Remove a pin for a slice.
If the slice has no other pins/callbacks then the slice will be unpinned.
| See also | |
|---|---|
pinSlice |
|
onSliceUnpinned |
unregisterSliceCallback
public abstract void unregisterSliceCallback(
@NonNull Uri uri,
@NonNull SliceViewManager.SliceCallback callback
)
Removes a callback for a specific slice uri.
Removes the app from the pinned state (if there are no other apps/callbacks pinning it) in addition to removing the callback.
| Parameters | |
|---|---|
@NonNull Uri uri |
The uri of the slice being listened to |
@NonNull SliceViewManager.SliceCallback callback |
The listener that should no longer receive callbacks. |
| See also | |
|---|---|
registerSliceCallback |