From d368c218322065278f4fb31a534bc9a1657df79e Mon Sep 17 00:00:00 2001 From: hughchen Date: Thu, 24 Oct 2019 14:36:37 +0800 Subject: [PATCH] Fix runtime exception when cachedDevice is null Finish the activity after call super.onAttach(). Bug: 143187915 Test: make -j42 RunSettingsRoboTests Change-Id: I8f205ef60797bd9eb96617d413f554613008f65b --- .../bluetooth/AdvancedBluetoothDetailsHeaderController.java | 3 ++- .../settings/bluetooth/BluetoothDeviceDetailsFragment.java | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/bluetooth/AdvancedBluetoothDetailsHeaderController.java b/src/com/android/settings/bluetooth/AdvancedBluetoothDetailsHeaderController.java index 7e100438a4e..e245c22eb96 100644 --- a/src/com/android/settings/bluetooth/AdvancedBluetoothDetailsHeaderController.java +++ b/src/com/android/settings/bluetooth/AdvancedBluetoothDetailsHeaderController.java @@ -92,7 +92,8 @@ public class AdvancedBluetoothDetailsHeaderController extends BasePreferenceCont public int getAvailabilityStatus() { final boolean advancedEnabled = DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SETTINGS_UI, SettingsUIDeviceConfig.BT_ADVANCED_HEADER_ENABLED, true); - final boolean untetheredHeadset = BluetoothUtils.getBooleanMetaData( + final boolean untetheredHeadset = mCachedDevice != null + && BluetoothUtils.getBooleanMetaData( mCachedDevice.getDevice(), BluetoothDevice.METADATA_IS_UNTETHERED_HEADSET); return advancedEnabled && untetheredHeadset ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; } diff --git a/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java b/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java index c31b13ecb0f..59c5078dbce 100644 --- a/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java +++ b/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java @@ -23,6 +23,7 @@ import android.bluetooth.BluetoothDevice; import android.content.Context; import android.os.Bundle; import android.provider.DeviceConfig; +import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; @@ -107,12 +108,13 @@ public class BluetoothDeviceDetailsFragment extends RestrictedDashboardFragment mDeviceAddress = getArguments().getString(KEY_DEVICE_ADDRESS); mManager = getLocalBluetoothManager(context); mCachedDevice = getCachedDevice(mDeviceAddress); + super.onAttach(context); if (mCachedDevice == null) { // Close this page if device is null with invalid device mac address + Log.w(TAG, "onAttach() CachedDevice is null!"); finish(); return; } - super.onAttach(context); use(AdvancedBluetoothDetailsHeaderController.class).init(mCachedDevice); final BluetoothFeatureProvider featureProvider = FeatureFactory.getFactory(