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);
}