diff --git a/res/layout/bluetooth_pin_confirm.xml b/res/layout/bluetooth_pin_confirm.xml
index ebdf65d..1e5eb0b 100644
--- a/res/layout/bluetooth_pin_confirm.xml
+++ b/res/layout/bluetooth_pin_confirm.xml
@@ -27,6 +27,7 @@
         android:paddingStart="16dip"
         android:layout_height="match_parent"
         android:layout_width="match_parent"
+        android:layout_marginTop="@dimen/bluetooth_dialog_padding_top"
         android:orientation="vertical">
 
         <TextView
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index f1c50d0..ba15a19 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -204,6 +204,7 @@
 
     <!-- Bluetooth Preferences -->
     <dimen name="bluetooth_dialog_padding">8dip</dimen>
+    <dimen name="bluetooth_dialog_padding_top">20dp</dimen>
     <integer name="bluetooth_name_length">32</integer>
     <dimen name="bluetooth_pairing_padding">24dp</dimen>
     <dimen name="bluetooth_pairing_edittext_padding">21dp</dimen>
diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index 575194b..b3f067a 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -46,6 +46,7 @@
 
 import com.android.settings.applications.LayoutPreference;
 import com.android.settings.core.InstrumentedFragment;
+import com.android.settings.core.instrumentation.Instrumentable;
 import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 import com.android.settingslib.HelpUtils;
 
@@ -626,6 +627,9 @@
 
         @Override
         public int getMetricsCategory() {
+            if (mDialogCreatable == null) {
+                return Instrumentable.METRICS_CATEGORY_UNKNOWN;
+            }
             final int metricsCategory = mDialogCreatable.getDialogMetricsCategory(mDialogId);
             if (metricsCategory <= 0) {
                 throw new IllegalStateException("Dialog must provide a metrics category");
diff --git a/src/com/android/settings/bluetooth/BluetoothPairingDialog.java b/src/com/android/settings/bluetooth/BluetoothPairingDialog.java
index b176efd..fe48148 100755
--- a/src/com/android/settings/bluetooth/BluetoothPairingDialog.java
+++ b/src/com/android/settings/bluetooth/BluetoothPairingDialog.java
@@ -309,6 +309,8 @@
                 break;
 
             case BluetoothDevice.PAIRING_VARIANT_CONSENT:
+                messagePairing.setVisibility(view.GONE);
+                break;
             case BluetoothDevice.PAIRING_VARIANT_OOB_CONSENT:
                 messagePairing.setVisibility(View.VISIBLE);
                 break;
diff --git a/src/com/android/settings/core/instrumentation/Instrumentable.java b/src/com/android/settings/core/instrumentation/Instrumentable.java
index bd0bdf4..e48dbd7 100644
--- a/src/com/android/settings/core/instrumentation/Instrumentable.java
+++ b/src/com/android/settings/core/instrumentation/Instrumentable.java
@@ -18,6 +18,8 @@
 
 public interface Instrumentable {
 
+    int METRICS_CATEGORY_UNKNOWN = 0;
+
     /**
      * Instrumented name for a view as defined in
      * {@link com.android.internal.logging.MetricsProto.MetricsEvent}.
diff --git a/src/com/android/settings/core/instrumentation/VisibilityLoggerMixin.java b/src/com/android/settings/core/instrumentation/VisibilityLoggerMixin.java
index 101dccd..54183a2 100644
--- a/src/com/android/settings/core/instrumentation/VisibilityLoggerMixin.java
+++ b/src/com/android/settings/core/instrumentation/VisibilityLoggerMixin.java
@@ -24,6 +24,8 @@
 import com.android.settings.core.lifecycle.events.OnResume;
 import com.android.settings.overlay.FeatureFactory;
 
+import static com.android.settings.core.instrumentation.Instrumentable.METRICS_CATEGORY_UNKNOWN;
+
 /**
  * Logs visibility change of a fragment.
  */
@@ -50,14 +52,14 @@
 
     @Override
     public void onResume() {
-        if (mMetricsFeature != null) {
+        if (mMetricsFeature != null && mMetricsCategory != METRICS_CATEGORY_UNKNOWN) {
             mMetricsFeature.visible(null /* context */, mMetricsCategory);
         }
     }
 
     @Override
     public void onPause() {
-        if (mMetricsFeature != null) {
+        if (mMetricsFeature != null && mMetricsCategory != METRICS_CATEGORY_UNKNOWN) {
             mMetricsFeature.hidden(null /* context */, mMetricsCategory);
         }
     }
diff --git a/tests/robotests/src/com/android/settings/core/instrumentation/VisibilityLoggerMixinTest.java b/tests/robotests/src/com/android/settings/core/instrumentation/VisibilityLoggerMixinTest.java
index c009d0c..3fa8c94 100644
--- a/tests/robotests/src/com/android/settings/core/instrumentation/VisibilityLoggerMixinTest.java
+++ b/tests/robotests/src/com/android/settings/core/instrumentation/VisibilityLoggerMixinTest.java
@@ -27,6 +27,7 @@
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 
+import static com.android.settings.core.instrumentation.Instrumentable.METRICS_CATEGORY_UNKNOWN;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyInt;
 import static org.mockito.Matchers.eq;
@@ -76,6 +77,17 @@
                 .hidden(any(Context.class), anyInt());
     }
 
+    @Test
+    public void shouldNotLogIfMetricsCategoryIsUnknown() {
+        mMixin = new VisibilityLoggerMixin(METRICS_CATEGORY_UNKNOWN, mMetricsFeature);
+
+        mMixin.onResume();
+        mMixin.onPause();
+
+        verify(mMetricsFeature, never())
+                .hidden(any(Context.class), anyInt());
+    }
+
     private final class TestInstrumentable implements Instrumentable {
 
         public static final int TEST_METRIC = 12345;
