diff options
| -rw-r--r-- | api/current.txt | 15 | ||||
| -rw-r--r-- | core/java/android/app/slice/Slice.java | 47 | ||||
| -rw-r--r-- | core/java/android/app/slice/SliceManager.java | 29 | ||||
| -rw-r--r-- | core/java/android/app/slice/SliceProvider.java | 9 |
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; } |