diff --git a/src/com/android/settings/notification/AppNotificationSettings.java b/src/com/android/settings/notification/AppNotificationSettings.java
index 91035732..ec8af26 100644
--- a/src/com/android/settings/notification/AppNotificationSettings.java
+++ b/src/com/android/settings/notification/AppNotificationSettings.java
@@ -20,6 +20,7 @@
 import android.app.AlertDialog;
 import android.app.INotificationManager;
 import android.app.ListFragment;
+import android.app.Notification;
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.ActivityInfo;
@@ -65,10 +66,22 @@
     private static final String TAG = "AppNotificationSettings";
     private static final boolean DEBUG = true;
 
+    /**
+     * Show a checkbox in the per-app notification control dialog to allow the user
+     * to promote this app's notifications to higher priority.
+     */
+    private static final boolean ENABLE_APP_NOTIFICATION_PRIORITY_OPTION = false;
+    /**
+     * Show a checkbox in the per-app notification control dialog to allow the user to
+     * selectively redact this app's notifications on the lockscreen.
+     */
+    private static final boolean ENABLE_APP_NOTIFICATION_PRIVACY_OPTION = false;
+
     private static final String SECTION_BEFORE_A = "*";
     private static final String SECTION_AFTER_Z = "**";
     private static final Intent APP_NOTIFICATION_PREFS_CATEGORY_INTENT
-            = new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_NOTIFICATION_PREFERENCES);
+            = new Intent(Intent.ACTION_MAIN)
+                .addCategory(Notification.INTENT_CATEGORY_NOTIFICATION_PREFERENCES);
 
     private final Handler mHandler = new Handler();
     private final ArrayMap<String, AppRow> mRows = new ArrayMap<String, AppRow>();
@@ -187,6 +200,14 @@
         final CheckBox priBox = (CheckBox) layout.findViewById(android.R.id.button2);
         final CheckBox senBox = (CheckBox) layout.findViewById(android.R.id.button3);
 
+        if (!ENABLE_APP_NOTIFICATION_PRIORITY_OPTION) {
+            priBox.setVisibility(View.GONE);
+        }
+
+        if (!ENABLE_APP_NOTIFICATION_PRIVACY_OPTION) {
+            senBox.setVisibility(View.GONE);
+        }
+
         showBox.setChecked(!row.banned);
         final OnCheckedChangeListener showListener = new OnCheckedChangeListener() {
             @Override
