Fixed Bluetooth availability test in Settings

Added similar test for WiFi to be consistent.

Added null tests in BluetoothEnabler.

Change-Id: Ia6e7b150a1bc060c7ce0b4db12ab3f6c958af104
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index 1f54b17..078c2ee 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -16,7 +16,6 @@
 
 package com.android.settings;
 
-import android.bluetooth.BluetoothAdapter;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
@@ -24,7 +23,6 @@
 import android.content.pm.PackageManager;
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.os.Bundle;
-import android.os.ServiceManager;
 import android.preference.PreferenceActivity;
 import android.text.TextUtils;
 import android.util.Log;
@@ -313,9 +311,14 @@
             } else if (id == R.id.call_settings) {
                 if (!Utils.isVoiceCapable(this))
                     target.remove(header);
+            } else if (id == R.id.wifi_settings) {
+                // Remove WiFi Settings if WiFi service is not available.
+                if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_WIFI)) {
+                    target.remove(header);
+                }
             } else if (id == R.id.bluetooth_settings) {
                 // Remove Bluetooth Settings if Bluetooth service is not available.
-                if (ServiceManager.getService(BluetoothAdapter.BLUETOOTH_SERVICE) == null) {
+                if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)) {
                     target.remove(header);
                 }
             }
diff --git a/src/com/android/settings/bluetooth/BluetoothEnabler.java b/src/com/android/settings/bluetooth/BluetoothEnabler.java
index 50149d8..f08e083 100644
--- a/src/com/android/settings/bluetooth/BluetoothEnabler.java
+++ b/src/com/android/settings/bluetooth/BluetoothEnabler.java
@@ -66,6 +66,7 @@
 
     public void resume() {
         if (mLocalAdapter == null) {
+            mSwitch.setEnabled(false);
             return;
         }
 
@@ -91,11 +92,12 @@
         mSwitch = switch_;
         mSwitch.setOnCheckedChangeListener(this);
 
-        final int bluetoothState = mLocalAdapter.getBluetoothState();
-        boolean isEnabled = bluetoothState == BluetoothAdapter.STATE_ON;
-        boolean isDisabled = bluetoothState == BluetoothAdapter.STATE_OFF;
-        mSwitch.setChecked(isEnabled);
-        mSwitch.setEnabled(isEnabled || isDisabled);
+        int bluetoothState = BluetoothAdapter.STATE_OFF;
+        if (mLocalAdapter != null) bluetoothState = mLocalAdapter.getBluetoothState();
+        boolean isOn = bluetoothState == BluetoothAdapter.STATE_ON;
+        boolean isOff = bluetoothState == BluetoothAdapter.STATE_OFF;
+        mSwitch.setChecked(isOn);
+        mSwitch.setEnabled(isOn || isOff);
     }
 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
@@ -107,7 +109,9 @@
             buttonView.setChecked(false);
         }
 
-        mLocalAdapter.setBluetoothEnabled(isChecked);
+        if (mLocalAdapter != null) {
+            mLocalAdapter.setBluetoothEnabled(isChecked);
+        }
         mSwitch.setEnabled(false);
     }