Fix crash when no Bluetooth feature in Settings

- Move PreferenceGroup init method out of isAvailable() condition,
  then PreferenceGroup will not be null.
- Update getAvailabilityStatus(), since the controller now may have usb
  and dock.

Bug: 110712414
Test: make -j42 RunSettingsRoboTests
Change-Id: I4d85a42c26fb20d319e7321177b271933be3fdb0
This commit is contained in:
hughchen
2019-04-17 15:43:22 +08:00
parent 96b534951c
commit ef2c1a1526
8 changed files with 94 additions and 14 deletions

View File

@@ -73,10 +73,10 @@ public class SavedDeviceGroupController extends BasePreferenceController
@Override
public void displayPreference(PreferenceScreen screen) {
if (isAvailable()) {
mPreferenceGroup = screen.findPreference(KEY);
mPreferenceGroup.setVisible(false);
mPreferenceGroup = screen.findPreference(KEY);
mPreferenceGroup.setVisible(false);
if (isAvailable()) {
final Context context = screen.getContext();
mBluetoothDeviceUpdater.setPrefContext(context);
mBluetoothDeviceUpdater.forceUpdate();
@@ -87,7 +87,8 @@ public class SavedDeviceGroupController extends BasePreferenceController
@Override
public int getAvailabilityStatus() {
return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)
return (mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)
|| mSavedDockUpdater != null)
? AVAILABLE
: UNSUPPORTED_ON_DEVICE;
}