summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java11
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java17
2 files changed, 27 insertions, 1 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java
index 5a84fa523f67..b7a562bfac5d 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java
@@ -52,6 +52,7 @@ import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.tuner.TunerService;
import com.android.systemui.util.wakelock.KeepAwakeAnimationListener;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.function.Consumer;
@@ -158,7 +159,15 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe
ListContent lc = new ListContent(getContext(), mSlice, null, 0, 0);
mHasHeader = lc.hasHeader();
- List<SliceItem> subItems = lc.getRowItems();
+ List<SliceItem> subItems = new ArrayList<SliceItem>();
+ for (int i = 0; i < lc.getRowItems().size(); i++) {
+ SliceItem subItem = lc.getRowItems().get(i);
+ String itemUri = subItem.getSlice().getUri().toString();
+ // Filter out the action row
+ if (!KeyguardSliceProvider.KEYGUARD_ACTION_URI.equals(itemUri)) {
+ subItems.add(subItem);
+ }
+ }
if (!mHasHeader) {
mTitle.setVisibility(GONE);
} else {
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java
index 8b9bf776332b..fe8ea34f34c5 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java
@@ -19,6 +19,7 @@ package com.android.systemui.keyguard;
import android.app.ActivityManager;
import android.app.AlarmManager;
import android.app.NotificationManager;
+import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
@@ -48,6 +49,7 @@ import androidx.slice.Slice;
import androidx.slice.SliceProvider;
import androidx.slice.builders.ListBuilder;
import androidx.slice.builders.ListBuilder.RowBuilder;
+import androidx.slice.builders.SliceAction;
/**
* Simple Slice provider that shows the current date.
@@ -60,6 +62,8 @@ public class KeyguardSliceProvider extends SliceProvider implements
public static final String KEYGUARD_NEXT_ALARM_URI =
"content://com.android.systemui.keyguard/alarm";
public static final String KEYGUARD_DND_URI = "content://com.android.systemui.keyguard/dnd";
+ public static final String KEYGUARD_ACTION_URI =
+ "content://com.android.systemui.keyguard/action";
/**
* Only show alarms that will ring within N hours.
@@ -127,9 +131,22 @@ public class KeyguardSliceProvider extends SliceProvider implements
builder.addRow(new RowBuilder(builder, mDateUri).setTitle(mLastText));
addNextAlarm(builder);
addZenMode(builder);
+ addPrimaryAction(builder);
return builder.build();
}
+ protected void addPrimaryAction(ListBuilder builder) {
+ // Add simple action because API requires it; Keyguard handles presenting
+ // its own slices so this action + icon are actually never used.
+ PendingIntent pi = PendingIntent.getActivity(getContext(), 0, new Intent(), 0);
+ Icon icon = Icon.createWithResource(getContext(), R.drawable.ic_access_alarms_big);
+ SliceAction action = new SliceAction(pi, icon, mLastText);
+
+ RowBuilder primaryActionRow = new RowBuilder(builder, Uri.parse(KEYGUARD_ACTION_URI))
+ .setPrimaryAction(action);
+ builder.addRow(primaryActionRow);
+ }
+
protected void addNextAlarm(ListBuilder builder) {
if (TextUtils.isEmpty(mNextAlarm)) {
return;