b/2320107 Fixed NPE for class bits. Docks do not have class bits.

Change-Id: Ibe4f697a906010f8f3ee270b891db286a4976f8a
diff --git a/src/com/android/settings/bluetooth/BluetoothSettings.java b/src/com/android/settings/bluetooth/BluetoothSettings.java
index 8a0795b..4364795 100644
--- a/src/com/android/settings/bluetooth/BluetoothSettings.java
+++ b/src/com/android/settings/bluetooth/BluetoothSettings.java
@@ -326,7 +326,10 @@
             if (uuids != null)
                 if (BluetoothUuid.containsAnyUuid(uuids,
                         LocalBluetoothProfileManager.OPP_PROFILE_UUIDS))  return true;
-            if (bluetoothClass.doesClassMatch(BluetoothClass.PROFILE_OPP)) return true;
+                if (bluetoothClass != null
+                        && bluetoothClass.doesClassMatch(BluetoothClass.PROFILE_OPP)) {
+                    return true;
+                }
             break;
         case BluetoothDevicePicker.FILTER_TYPE_AUDIO:
             if (uuids != null) {
@@ -335,7 +338,7 @@
 
                 if (BluetoothUuid.containsAnyUuid(uuids,
                         LocalBluetoothProfileManager.HEADSET_PROFILE_UUIDS))  return true;
-            } else {
+            } else if (bluetoothClass != null) {
                 if (bluetoothClass.doesClassMatch(BluetoothClass.PROFILE_A2DP)) return true;
 
                 if (bluetoothClass.doesClassMatch(BluetoothClass.PROFILE_HEADSET)) return true;
diff --git a/src/com/android/settings/bluetooth/CachedBluetoothDevice.java b/src/com/android/settings/bluetooth/CachedBluetoothDevice.java
index ca72d8a..57bffa9 100644
--- a/src/com/android/settings/bluetooth/CachedBluetoothDevice.java
+++ b/src/com/android/settings/bluetooth/CachedBluetoothDevice.java
@@ -691,26 +691,28 @@
             boolean printUuids = true;
             BluetoothClass bluetoothClass = mDevice.getBluetoothClass();
 
-            if (bluetoothClass.doesClassMatch(BluetoothClass.PROFILE_HEADSET) !=
-                mProfiles.contains(Profile.HEADSET)) {
-                Log.v(TAG, "headset classbits != uuid");
-                printUuids = true;
-            }
+            if (bluetoothClass != null) {
+                if (bluetoothClass.doesClassMatch(BluetoothClass.PROFILE_HEADSET) !=
+                    mProfiles.contains(Profile.HEADSET)) {
+                    Log.v(TAG, "headset classbits != uuid");
+                    printUuids = true;
+                }
 
-            if (bluetoothClass.doesClassMatch(BluetoothClass.PROFILE_A2DP) !=
-                mProfiles.contains(Profile.A2DP)) {
-                Log.v(TAG, "a2dp classbits != uuid");
-                printUuids = true;
-            }
+                if (bluetoothClass.doesClassMatch(BluetoothClass.PROFILE_A2DP) !=
+                    mProfiles.contains(Profile.A2DP)) {
+                    Log.v(TAG, "a2dp classbits != uuid");
+                    printUuids = true;
+                }
 
-            if (bluetoothClass.doesClassMatch(BluetoothClass.PROFILE_OPP) !=
-                mProfiles.contains(Profile.OPP)) {
-                Log.v(TAG, "opp classbits != uuid");
-                printUuids = true;
+                if (bluetoothClass.doesClassMatch(BluetoothClass.PROFILE_OPP) !=
+                    mProfiles.contains(Profile.OPP)) {
+                    Log.v(TAG, "opp classbits != uuid");
+                    printUuids = true;
+                }
             }
 
             if (printUuids) {
-                Log.v(TAG, "Class: " + bluetoothClass.toString());
+                if (bluetoothClass != null) Log.v(TAG, "Class: " + bluetoothClass.toString());
                 Log.v(TAG, "UUID:");
                 for (int i = 0; i < uuids.length; i++) {
                     Log.v(TAG, "  " + uuids[i]);