diff --git a/api/current.txt b/api/current.txt index bb3022023a9e9..4549d2d28d85b 100644 --- a/api/current.txt +++ b/api/current.txt @@ -7219,6 +7219,7 @@ package android.app.slice { field public static final java.lang.String HINT_LIST_ITEM = "list_item"; field public static final java.lang.String HINT_NO_TINT = "no_tint"; field public static final java.lang.String HINT_PARTIAL = "partial"; + field public static final java.lang.String HINT_PERMISSION_REQUEST = "permission_request"; field public static final java.lang.String HINT_SEE_MORE = "see_more"; field public static final java.lang.String HINT_SELECTED = "selected"; field public static final java.lang.String HINT_SHORTCUT = "shortcut"; diff --git a/core/java/android/app/slice/Slice.java b/core/java/android/app/slice/Slice.java index 95bb1f6827010..fc3b38d2bcfbb 100644 --- a/core/java/android/app/slice/Slice.java +++ b/core/java/android/app/slice/Slice.java @@ -70,6 +70,7 @@ public final class Slice implements Parcelable { HINT_ERROR, HINT_TTL, HINT_LAST_UPDATED, + HINT_PERMISSION_REQUEST, }) @Retention(RetentionPolicy.SOURCE) public @interface SliceHint {} @@ -183,6 +184,11 @@ public final class Slice implements Parcelable { * Hint indicating an item representing when the content was created or last updated. */ public static final String HINT_LAST_UPDATED = "last_updated"; + /** + * A hint to indicate that this slice represents a permission request for showing + * slices. + */ + public static final String HINT_PERMISSION_REQUEST = "permission_request"; /** * Key to retrieve an extra added to an intent when a control is changed. */ diff --git a/core/java/android/app/slice/SliceProvider.java b/core/java/android/app/slice/SliceProvider.java index bf856b74f0675..bbeb3849be78c 100644 --- a/core/java/android/app/slice/SliceProvider.java +++ b/core/java/android/app/slice/SliceProvider.java @@ -428,15 +428,17 @@ public abstract class SliceProvider extends ContentProvider { } finally { Handler.getMain().removeCallbacks(mAnr); } - return new Slice.Builder(sliceUri) - .addAction(action, - new Slice.Builder(sliceUri.buildUpon().appendPath("permission").build()) - .addText(getPermissionString(context, callingPackage), null, - Collections.emptyList()) - .build(), - null) - .addHints(Arrays.asList(Slice.HINT_LIST_ITEM)) - .build(); + Slice.Builder parent = new Slice.Builder(sliceUri); + Slice.Builder childAction = new Slice.Builder(parent) + .addHints(Arrays.asList(Slice.HINT_TITLE, Slice.HINT_SHORTCUT)) + .addAction(action, new Slice.Builder(parent).build(), null); + + parent.addSubSlice(new Slice.Builder(sliceUri.buildUpon().appendPath("permission").build()) + .addText(getPermissionString(context, callingPackage), null, + Collections.emptyList()) + .addSubSlice(childAction.build(), null) + .build(), null); + return parent.addHints(Arrays.asList(Slice.HINT_PERMISSION_REQUEST)).build(); } /**