summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/current.txt15
-rw-r--r--core/java/android/app/slice/Slice.java47
-rw-r--r--core/java/android/app/slice/SliceManager.java29
-rw-r--r--core/java/android/app/slice/SliceProvider.java9
4 files changed, 59 insertions, 41 deletions
diff --git a/api/current.txt b/api/current.txt
index c14a8a726ac6..423e0ae6df69 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -7206,6 +7206,8 @@ package android.app.slice {
public final class Slice implements android.os.Parcelable {
ctor protected Slice(android.os.Parcel);
+ method public static deprecated android.app.slice.Slice bindSlice(android.content.ContentResolver, android.net.Uri, java.util.List<android.app.slice.SliceSpec>);
+ method public static deprecated android.app.slice.Slice bindSlice(android.content.Context, android.content.Intent, java.util.List<android.app.slice.SliceSpec>);
method public int describeContents();
method public java.util.List<java.lang.String> getHints();
method public java.util.List<android.app.slice.SliceItem> getItems();
@@ -7295,17 +7297,15 @@ package android.app.slice {
}
public class SliceManager {
- method public android.app.slice.Slice bindSlice(android.net.Uri, java.util.Set<android.app.slice.SliceSpec>);
- method public deprecated android.app.slice.Slice bindSlice(android.net.Uri, java.util.List<android.app.slice.SliceSpec>);
- method public android.app.slice.Slice bindSlice(android.content.Intent, java.util.Set<android.app.slice.SliceSpec>);
+ method public android.app.slice.Slice bindSlice(android.net.Uri, java.util.List<android.app.slice.SliceSpec>);
+ method public android.app.slice.Slice bindSlice(android.content.Intent, java.util.List<android.app.slice.SliceSpec>);
method public int checkSlicePermission(android.net.Uri, int, int);
method public java.util.List<android.net.Uri> getPinnedSlices();
- method public java.util.Set<android.app.slice.SliceSpec> getPinnedSpecs(android.net.Uri);
+ method public java.util.List<android.app.slice.SliceSpec> getPinnedSpecs(android.net.Uri);
method public java.util.Collection<android.net.Uri> getSliceDescendants(android.net.Uri);
method public void grantSlicePermission(java.lang.String, android.net.Uri);
method public android.net.Uri mapIntentToUri(android.content.Intent);
- method public void pinSlice(android.net.Uri, java.util.Set<android.app.slice.SliceSpec>);
- method public deprecated void pinSlice(android.net.Uri, java.util.List<android.app.slice.SliceSpec>);
+ method public void pinSlice(android.net.Uri, java.util.List<android.app.slice.SliceSpec>);
method public void revokeSlicePermission(java.lang.String, android.net.Uri);
method public void unpinSlice(android.net.Uri);
field public static final java.lang.String CATEGORY_SLICE = "android.app.slice.category.SLICE";
@@ -7325,8 +7325,7 @@ package android.app.slice {
method public final int delete(android.net.Uri, java.lang.String, java.lang.String[]);
method public final java.lang.String getType(android.net.Uri);
method public final android.net.Uri insert(android.net.Uri, android.content.ContentValues);
- method public android.app.slice.Slice onBindSlice(android.net.Uri, java.util.Set<android.app.slice.SliceSpec>);
- method public deprecated android.app.slice.Slice onBindSlice(android.net.Uri, java.util.List<android.app.slice.SliceSpec>);
+ method public android.app.slice.Slice onBindSlice(android.net.Uri, java.util.List<android.app.slice.SliceSpec>);
method public android.app.PendingIntent onCreatePermissionRequest(android.net.Uri);
method public java.util.Collection<android.net.Uri> onGetSliceDescendants(android.net.Uri);
method public android.net.Uri onMapIntentToUri(android.content.Intent);
diff --git a/core/java/android/app/slice/Slice.java b/core/java/android/app/slice/Slice.java
index 4336f184cad7..bf3398ad3c73 100644
--- a/core/java/android/app/slice/Slice.java
+++ b/core/java/android/app/slice/Slice.java
@@ -21,13 +21,19 @@ import android.annotation.Nullable;
import android.annotation.StringDef;
import android.app.PendingIntent;
import android.app.RemoteInput;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.IContentProvider;
+import android.content.Intent;
import android.graphics.drawable.Icon;
import android.net.Uri;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
+import android.os.RemoteException;
import com.android.internal.util.ArrayUtils;
+import com.android.internal.util.Preconditions;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -569,4 +575,45 @@ public final class Slice implements Parcelable {
}
return sb.toString();
}
+
+ /**
+ * @deprecated TO BE REMOVED.
+ */
+ @Deprecated
+ public static @Nullable Slice bindSlice(ContentResolver resolver,
+ @NonNull Uri uri, @NonNull List<SliceSpec> supportedSpecs) {
+ Preconditions.checkNotNull(uri, "uri");
+ IContentProvider provider = resolver.acquireProvider(uri);
+ if (provider == null) {
+ throw new IllegalArgumentException("Unknown URI " + uri);
+ }
+ try {
+ Bundle extras = new Bundle();
+ extras.putParcelable(SliceProvider.EXTRA_BIND_URI, uri);
+ extras.putParcelableArrayList(SliceProvider.EXTRA_SUPPORTED_SPECS,
+ new ArrayList<>(supportedSpecs));
+ final Bundle res = provider.call(resolver.getPackageName(), SliceProvider.METHOD_SLICE,
+ null, extras);
+ Bundle.setDefusable(res, true);
+ if (res == null) {
+ return null;
+ }
+ return res.getParcelable(SliceProvider.EXTRA_SLICE);
+ } catch (RemoteException e) {
+ // Arbitrary and not worth documenting, as Activity
+ // Manager will kill this process shortly anyway.
+ return null;
+ } finally {
+ resolver.releaseProvider(provider);
+ }
+ }
+
+ /**
+ * @deprecated TO BE REMOVED.
+ */
+ @Deprecated
+ public static @Nullable Slice bindSlice(Context context, @NonNull Intent intent,
+ @NonNull List<SliceSpec> supportedSpecs) {
+ return context.getSystemService(SliceManager.class).bindSlice(intent, supportedSpecs);
+ }
}
diff --git a/core/java/android/app/slice/SliceManager.java b/core/java/android/app/slice/SliceManager.java
index 4127a40a69ff..0285e9f9cc59 100644
--- a/core/java/android/app/slice/SliceManager.java
+++ b/core/java/android/app/slice/SliceManager.java
@@ -38,7 +38,6 @@ import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.ServiceManager.ServiceNotFoundException;
import android.os.UserHandle;
-import android.util.ArraySet;
import android.util.Log;
import com.android.internal.util.Preconditions;
@@ -48,7 +47,6 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
-import java.util.Set;
/**
* Class to handle interactions with {@link Slice}s.
@@ -142,7 +140,7 @@ public class SliceManager {
* @see Intent#ACTION_ASSIST
* @see Intent#CATEGORY_HOME
*/
- public void pinSlice(@NonNull Uri uri, @NonNull Set<SliceSpec> specs) {
+ public void pinSlice(@NonNull Uri uri, @NonNull List<SliceSpec> specs) {
try {
mService.pinSlice(mContext.getPackageName(), uri,
specs.toArray(new SliceSpec[specs.size()]), mToken);
@@ -152,14 +150,6 @@ public class SliceManager {
}
/**
- * @deprecated TO BE REMOVED
- */
- @Deprecated
- public void pinSlice(@NonNull Uri uri, @NonNull List<SliceSpec> specs) {
- pinSlice(uri, new ArraySet<>(specs));
- }
-
- /**
* Remove a pin for a slice.
* <p>
* If the slice has no other pins/callbacks then the slice will be unpinned.
@@ -199,10 +189,9 @@ public class SliceManager {
* into account all clients and returns only specs supported by all.
* @see SliceSpec
*/
- public @NonNull Set<SliceSpec> getPinnedSpecs(Uri uri) {
+ public @NonNull List<SliceSpec> getPinnedSpecs(Uri uri) {
try {
- return new ArraySet<>(Arrays.asList(mService.getPinnedSpecs(uri,
- mContext.getPackageName())));
+ return Arrays.asList(mService.getPinnedSpecs(uri, mContext.getPackageName()));
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -251,7 +240,7 @@ public class SliceManager {
* @return The Slice provided by the app or null if none is given.
* @see Slice
*/
- public @Nullable Slice bindSlice(@NonNull Uri uri, @NonNull Set<SliceSpec> supportedSpecs) {
+ public @Nullable Slice bindSlice(@NonNull Uri uri, @NonNull List<SliceSpec> supportedSpecs) {
Preconditions.checkNotNull(uri, "uri");
ContentResolver resolver = mContext.getContentResolver();
try (ContentProviderClient provider = resolver.acquireContentProviderClient(uri)) {
@@ -276,14 +265,6 @@ public class SliceManager {
}
/**
- * @deprecated TO BE REMOVED
- */
- @Deprecated
- public @Nullable Slice bindSlice(@NonNull Uri uri, @NonNull List<SliceSpec> supportedSpecs) {
- return bindSlice(uri, new ArraySet<>(supportedSpecs));
- }
-
- /**
* Turns a slice intent into a slice uri. Expects an explicit intent.
* <p>
* This goes through a several stage resolution process to determine if any slice
@@ -370,7 +351,7 @@ public class SliceManager {
* @see Intent
*/
public @Nullable Slice bindSlice(@NonNull Intent intent,
- @NonNull Set<SliceSpec> supportedSpecs) {
+ @NonNull List<SliceSpec> supportedSpecs) {
Preconditions.checkNotNull(intent, "intent");
Preconditions.checkArgument(intent.getComponent() != null || intent.getPackage() != null
|| intent.getData() != null,
diff --git a/core/java/android/app/slice/SliceProvider.java b/core/java/android/app/slice/SliceProvider.java
index d369272d84c6..fe5742d6da38 100644
--- a/core/java/android/app/slice/SliceProvider.java
+++ b/core/java/android/app/slice/SliceProvider.java
@@ -44,7 +44,6 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
-import java.util.Set;
/**
* A SliceProvider allows an app to provide content to be displayed in system spaces. This content
@@ -198,14 +197,6 @@ public abstract class SliceProvider extends ContentProvider {
* @see {@link Slice}.
* @see {@link Slice#HINT_PARTIAL}
*/
- public Slice onBindSlice(Uri sliceUri, Set<SliceSpec> supportedSpecs) {
- return onBindSlice(sliceUri, new ArrayList<>(supportedSpecs));
- }
-
- /**
- * @deprecated TO BE REMOVED
- */
- @Deprecated
public Slice onBindSlice(Uri sliceUri, List<SliceSpec> supportedSpecs) {
return null;
}