From 86a9e06419cc96be8e7faf306f933a15b4ee3b75 Mon Sep 17 00:00:00 2001 From: Pawan Wagh Date: Wed, 3 Jul 2024 21:37:04 +0000 Subject: [PATCH] Repost PageAgnostic mode notification when dismissed Device is in experimental mode when using 16kB developer option. When the notification is dimissed, repost it again. Bug: 351029724 Test: m Settings && adb install -r $ANDROID_PRODUCT_OUT/system_ext/priv-app/Settings/Settings.apk Flag: EXEMPT bugfix Change-Id: Ie579b6c4dd060b165c6cc8ae635d48e257d49bec --- .../development/Enable16KBootReceiver.java | 20 +++++++++---------- .../PageAgnosticNotificationService.java | 18 ++++++++++++++--- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/src/com/android/settings/development/Enable16KBootReceiver.java b/src/com/android/settings/development/Enable16KBootReceiver.java index 007a67b9d4f..bc2096d9452 100644 --- a/src/com/android/settings/development/Enable16KBootReceiver.java +++ b/src/com/android/settings/development/Enable16KBootReceiver.java @@ -28,17 +28,17 @@ public class Enable16KBootReceiver extends BroadcastReceiver { @Override public void onReceive(@NonNull Context context, @NonNull Intent intent) { String action = intent.getAction(); - if (!Intent.ACTION_BOOT_COMPLETED.equals(action)) { - return; - } + if (Intent.ACTION_BOOT_COMPLETED.equals(action) + || PageAgnosticNotificationService.INTENT_ACTION_DISMISSED.equals(action)) { + // Do nothing if device is not in page-agnostic mode + if (!Enable16kUtils.isPageAgnosticModeOn(context)) { + return; + } - // Do nothing if device is not in page-agnostic mode - if (!Enable16kUtils.isPageAgnosticModeOn(context)) { - return; + // start a service to post persistent notification + Intent startServiceIntent = new Intent(context, PageAgnosticNotificationService.class); + startServiceIntent.setAction(action); + context.startServiceAsUser(startServiceIntent, UserHandle.SYSTEM); } - - // start a service to post persistent notification - Intent startNotificationIntent = new Intent(context, PageAgnosticNotificationService.class); - context.startServiceAsUser(startNotificationIntent, UserHandle.SYSTEM); } } diff --git a/src/com/android/settings/development/PageAgnosticNotificationService.java b/src/com/android/settings/development/PageAgnosticNotificationService.java index 1bdda410d69..d33f1da1fc7 100644 --- a/src/com/android/settings/development/PageAgnosticNotificationService.java +++ b/src/com/android/settings/development/PageAgnosticNotificationService.java @@ -34,6 +34,8 @@ public class PageAgnosticNotificationService extends Service { private static final String NOTIFICATION_CHANNEL_ID = "com.android.settings.development.PageAgnosticNotificationService"; + public static final String INTENT_ACTION_DISMISSED = + "com.android.settings.development.NOTIFICATION_DISMISSED"; private static final int NOTIFICATION_ID = 1; static final int DISABLE_UPDATES_SETTING = 1; @@ -63,6 +65,9 @@ public class PageAgnosticNotificationService extends Service { public void onCreate() { super.onCreate(); createNotificationChannel(); + + // No updates should be allowed in page-agnostic mode + disableAutomaticUpdates(); } private Notification buildNotification() { @@ -89,6 +94,15 @@ public class PageAgnosticNotificationService extends Service { notifyIntent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE); + Intent dismissIntent = new Intent(this, Enable16KBootReceiver.class); + dismissIntent.setAction(INTENT_ACTION_DISMISSED); + PendingIntent dismissPendingIntent = + PendingIntent.getBroadcast( + this.getApplicationContext(), + 0, + dismissIntent, + PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE); + Notification.Action action = new Notification.Action.Builder( R.drawable.empty_icon, @@ -104,6 +118,7 @@ public class PageAgnosticNotificationService extends Service { .setOngoing(true) .setSmallIcon(R.drawable.ic_settings_24dp) .setContentIntent(notifyPendingIntent) + .setDeleteIntent(dismissPendingIntent) .addAction(action); return builder.build(); @@ -131,9 +146,6 @@ public class PageAgnosticNotificationService extends Service { if (mNotificationManager != null) { mNotificationManager.notify(NOTIFICATION_ID, notification); } - - // No updates should be allowed in page-agnostic mode - disableAutomaticUpdates(); return Service.START_REDELIVER_INTENT; } }