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
diff --git a/src/com/android/settings/development/Enable16KBootReceiver.java b/src/com/android/settings/development/Enable16KBootReceiver.java
index 007a67b..bc2096d 100644
--- a/src/com/android/settings/development/Enable16KBootReceiver.java
+++ b/src/com/android/settings/development/Enable16KBootReceiver.java
@@ -28,17 +28,17 @@
     @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 1bdda41..d33f1da 100644
--- a/src/com/android/settings/development/PageAgnosticNotificationService.java
+++ b/src/com/android/settings/development/PageAgnosticNotificationService.java
@@ -34,6 +34,8 @@
 
     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 void onCreate() {
         super.onCreate();
         createNotificationChannel();
+
+        // No updates should be allowed in page-agnostic mode
+        disableAutomaticUpdates();
     }
 
     private Notification buildNotification() {
@@ -89,6 +94,15 @@
                         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 @@
                         .setOngoing(true)
                         .setSmallIcon(R.drawable.ic_settings_24dp)
                         .setContentIntent(notifyPendingIntent)
+                        .setDeleteIntent(dismissPendingIntent)
                         .addAction(action);
 
         return builder.build();
@@ -131,9 +146,6 @@
         if (mNotificationManager != null) {
             mNotificationManager.notify(NOTIFICATION_ID, notification);
         }
-
-        // No updates should be allowed in page-agnostic mode
-        disableAutomaticUpdates();
         return Service.START_REDELIVER_INTENT;
     }
 }