diff --git a/src/com/android/settings/applications/specialaccess/notificationaccess/NotificationAccessDetails.java b/src/com/android/settings/applications/specialaccess/notificationaccess/NotificationAccessDetails.java
index 9e03657..da25f17 100644
--- a/src/com/android/settings/applications/specialaccess/notificationaccess/NotificationAccessDetails.java
+++ b/src/com/android/settings/applications/specialaccess/notificationaccess/NotificationAccessDetails.java
@@ -173,7 +173,7 @@
                 getActivity(), UserManager.DISALLOW_APPS_CONTROL, mUserId);
 
         if (!refreshUi()) {
-            setIntentAndFinish(true /* appChanged */);
+            finish();
         }
         Preference apps = getPreferenceScreen().findPreference(
                 use(BridgedAppsLinkPreferenceController.class).getPreferenceKey());
@@ -197,14 +197,6 @@
         }
     }
 
-    protected void setIntentAndFinish(boolean appChanged) {
-        Log.i(TAG, "appChanged=" + appChanged);
-        Intent intent = new Intent();
-        intent.putExtra(ManageApplications.APP_CHG, appChanged);
-        SettingsActivity sa = (SettingsActivity) getActivity();
-        sa.finishPreferencePanel(Activity.RESULT_OK, intent);
-    }
-
     protected void retrieveAppEntry() {
         final Bundle args = getArguments();
         mPackageName = (args != null) ? args.getString(ARG_PACKAGE_NAME) : null;
@@ -228,7 +220,7 @@
                             PackageManager.GET_SIGNING_CERTIFICATES |
                             PackageManager.GET_PERMISSIONS, mUserId);
         } catch (PackageManager.NameNotFoundException e) {
-            Log.e(TAG, "Exception when retrieving package:" + mPackageName, e);
+            // oh well
         }
     }
 
diff --git a/src/com/android/settings/applications/specialaccess/zenaccess/ZenAccessDetails.java b/src/com/android/settings/applications/specialaccess/zenaccess/ZenAccessDetails.java
index c608b5b..0a326c6 100644
--- a/src/com/android/settings/applications/specialaccess/zenaccess/ZenAccessDetails.java
+++ b/src/com/android/settings/applications/specialaccess/zenaccess/ZenAccessDetails.java
@@ -53,10 +53,11 @@
         // If this app didn't declare this permission in their manifest, don't bother showing UI.
         final Set<String> needAccessApps =
                 ZenAccessController.getPackagesRequestingNotificationPolicyAccess();
-        if (!needAccessApps.contains(mPackageName)) {
-            return false;
+        if (needAccessApps.contains(mPackageName)) {
+            updatePreference(context, findPreference(SWITCH_PREF_KEY));
+        } else {
+            finish();
         }
-        updatePreference(context, findPreference(SWITCH_PREF_KEY));
         return true;
     }
 
