diff options
author | Weilun Du <wdu@google.com> | 2018-02-24 21:48:11 -0800 |
---|---|---|
committer | Weilun Du <wdu@google.com> | 2018-03-03 14:42:16 -0800 |
commit | 726f115660fdd19a546b51b4a6e52d51d105ea43 (patch) | |
tree | e6fd08e8e0a99cceb8b62b917b47b787491efe36 /src/com/android/settings/connecteddevice/ConnectedDeviceGroupController.java | |
parent | 203b923cb458d6dfd57874d873632a475d0b5f2b (diff) | |
download | packages_apps_Settings-726f115660fdd19a546b51b4a6e52d51d105ea43.tar.gz packages_apps_Settings-726f115660fdd19a546b51b4a6e52d51d105ea43.tar.bz2 packages_apps_Settings-726f115660fdd19a546b51b4a6e52d51d105ea43.zip |
Disable bluetooth controller if unsupported
Only disable the controllers not the whole fragment because
user might need to have entry for other features.
Change-Id: I9c44cca97189a2115785cf70aee8eb580ac56000
Fixes: 73664409
Signed-off-by: Weilun Du <wdu@google.com>
Diffstat (limited to 'src/com/android/settings/connecteddevice/ConnectedDeviceGroupController.java')
-rw-r--r-- | src/com/android/settings/connecteddevice/ConnectedDeviceGroupController.java | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/src/com/android/settings/connecteddevice/ConnectedDeviceGroupController.java b/src/com/android/settings/connecteddevice/ConnectedDeviceGroupController.java index 3d5d0e58e8..c77a7358d6 100644 --- a/src/com/android/settings/connecteddevice/ConnectedDeviceGroupController.java +++ b/src/com/android/settings/connecteddevice/ConnectedDeviceGroupController.java @@ -15,15 +15,18 @@ */ package com.android.settings.connecteddevice; +import android.content.pm.PackageManager; import android.support.annotation.VisibleForTesting; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceGroup; import android.support.v7.preference.PreferenceScreen; import com.android.settings.connecteddevice.usb.ConnectedUsbDeviceUpdater; +import com.android.settings.core.BasePreferenceController; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.bluetooth.BluetoothDeviceUpdater; import com.android.settings.bluetooth.ConnectedBluetoothDeviceUpdater; +import com.android.settings.search.ResultPayload; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; @@ -35,7 +38,7 @@ import com.android.settingslib.core.lifecycle.events.OnStop; * Controller to maintain the {@link android.support.v7.preference.PreferenceGroup} for all * connected devices. It uses {@link DevicePreferenceCallback} to add/remove {@link Preference} */ -public class ConnectedDeviceGroupController extends AbstractPreferenceController +public class ConnectedDeviceGroupController extends BasePreferenceController implements PreferenceControllerMixin, LifecycleObserver, OnStart, OnStop, DevicePreferenceCallback { @@ -47,7 +50,7 @@ public class ConnectedDeviceGroupController extends AbstractPreferenceController private ConnectedUsbDeviceUpdater mConnectedUsbDeviceUpdater; public ConnectedDeviceGroupController(DashboardFragment fragment, Lifecycle lifecycle) { - super(fragment.getContext()); + super(fragment.getContext(), KEY); init(lifecycle, new ConnectedBluetoothDeviceUpdater(fragment, this), new ConnectedUsbDeviceUpdater(fragment, this)); } @@ -56,7 +59,7 @@ public class ConnectedDeviceGroupController extends AbstractPreferenceController ConnectedDeviceGroupController(DashboardFragment fragment, Lifecycle lifecycle, BluetoothDeviceUpdater bluetoothDeviceUpdater, ConnectedUsbDeviceUpdater connectedUsbDeviceUpdater) { - super(fragment.getContext()); + super(fragment.getContext(), KEY); init(lifecycle, bluetoothDeviceUpdater, connectedUsbDeviceUpdater); } @@ -75,17 +78,21 @@ public class ConnectedDeviceGroupController extends AbstractPreferenceController @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); - mPreferenceGroup = (PreferenceGroup) screen.findPreference(KEY); - mPreferenceGroup.setVisible(false); + if (isAvailable()) { + mPreferenceGroup = (PreferenceGroup) screen.findPreference(KEY); + mPreferenceGroup.setVisible(false); - mBluetoothDeviceUpdater.setPrefContext(screen.getContext()); - mBluetoothDeviceUpdater.forceUpdate(); - mConnectedUsbDeviceUpdater.initUsbPreference(screen.getContext()); + mBluetoothDeviceUpdater.setPrefContext(screen.getContext()); + mBluetoothDeviceUpdater.forceUpdate(); + mConnectedUsbDeviceUpdater.initUsbPreference(screen.getContext()); + } } @Override - public boolean isAvailable() { - return true; + public int getAvailabilityStatus() { + return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH) + ? AVAILABLE + : DISABLED_UNSUPPORTED; } @Override @@ -111,7 +118,7 @@ public class ConnectedDeviceGroupController extends AbstractPreferenceController private void init(Lifecycle lifecycle, BluetoothDeviceUpdater bluetoothDeviceUpdater, ConnectedUsbDeviceUpdater connectedUsbDeviceUpdater) { - if (lifecycle != null) { + if (lifecycle != null && isAvailable()) { lifecycle.addObserver(this); } mBluetoothDeviceUpdater = bluetoothDeviceUpdater; |