From b14dde0793e6639c74adea33f72cf38a0fad70fb Mon Sep 17 00:00:00 2001 From: Jason Monk Date: Fri, 25 May 2018 15:13:16 -0400 Subject: [PATCH] Final cleanups to permission slices - Add icons to the right and shortcut modes - Add color - Make sure dialogs are secure Test: manual Bug: 79960669 Change-Id: I6d251b0ea5bd3c1b3eed32b184e4aae22c52ffb5 --- .../java/android/app/slice/SliceProvider.java | 18 +++++++++++++ core/res/res/drawable/ic_arrow_forward.xml | 24 +++++++++++++++++ core/res/res/drawable/ic_permission.xml | 26 +++++++++++++++++++ core/res/res/values/symbols.xml | 2 ++ packages/SystemUI/AndroidManifest.xml | 2 ++ .../systemui/SlicePermissionActivity.java | 6 ++++- 6 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 core/res/res/drawable/ic_arrow_forward.xml create mode 100644 core/res/res/drawable/ic_permission.xml diff --git a/core/java/android/app/slice/SliceProvider.java b/core/java/android/app/slice/SliceProvider.java index 5e7584122dd6f..4c22c94266d78 100644 --- a/core/java/android/app/slice/SliceProvider.java +++ b/core/java/android/app/slice/SliceProvider.java @@ -15,6 +15,8 @@ */ package android.app.slice; +import static android.app.slice.Slice.SUBTYPE_COLOR; + import android.annotation.NonNull; import android.app.PendingIntent; import android.content.ComponentName; @@ -29,6 +31,7 @@ import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.ProviderInfo; import android.database.ContentObserver; import android.database.Cursor; +import android.graphics.drawable.Icon; import android.net.Uri; import android.os.Binder; import android.os.Bundle; @@ -39,6 +42,8 @@ import android.os.StrictMode; import android.os.StrictMode.ThreadPolicy; import android.util.ArraySet; import android.util.Log; +import android.util.TypedValue; +import android.view.ContextThemeWrapper; import java.util.ArrayList; import java.util.Arrays; @@ -472,12 +477,25 @@ public abstract class SliceProvider extends ContentProvider { } Slice.Builder parent = new Slice.Builder(sliceUri); Slice.Builder childAction = new Slice.Builder(parent) + .addIcon(Icon.createWithResource(context, + com.android.internal.R.drawable.ic_permission), null, + Collections.emptyList()) .addHints(Arrays.asList(Slice.HINT_TITLE, Slice.HINT_SHORTCUT)) .addAction(action, new Slice.Builder(parent).build(), null); + TypedValue tv = new TypedValue(); + new ContextThemeWrapper(context, android.R.style.Theme_DeviceDefault_Light) + .getTheme().resolveAttribute(android.R.attr.colorAccent, tv, true); + int deviceDefaultAccent = tv.data; + parent.addSubSlice(new Slice.Builder(sliceUri.buildUpon().appendPath("permission").build()) + .addIcon(Icon.createWithResource(context, + com.android.internal.R.drawable.ic_arrow_forward), null, + Collections.emptyList()) .addText(getPermissionString(context, callingPackage), null, Collections.emptyList()) + .addInt(deviceDefaultAccent, SUBTYPE_COLOR, + Collections.emptyList()) .addSubSlice(childAction.build(), null) .build(), null); return parent.addHints(Arrays.asList(Slice.HINT_PERMISSION_REQUEST)).build(); diff --git a/core/res/res/drawable/ic_arrow_forward.xml b/core/res/res/drawable/ic_arrow_forward.xml new file mode 100644 index 0000000000000..f1085703ef13f --- /dev/null +++ b/core/res/res/drawable/ic_arrow_forward.xml @@ -0,0 +1,24 @@ + + + + diff --git a/core/res/res/drawable/ic_permission.xml b/core/res/res/drawable/ic_permission.xml new file mode 100644 index 0000000000000..00523509fcaef --- /dev/null +++ b/core/res/res/drawable/ic_permission.xml @@ -0,0 +1,26 @@ + + + + diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 7708911840496..f7ff377382561 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -3383,4 +3383,6 @@ + + diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml index 88edd12ab2f47..7871020a92aa1 100644 --- a/packages/SystemUI/AndroidManifest.xml +++ b/packages/SystemUI/AndroidManifest.xml @@ -211,6 +211,8 @@ + +