From f8757b7112e4546cd7608376b96c156c7d0ab989 Mon Sep 17 00:00:00 2001 From: Weilun Du Date: Mon, 30 Mar 2020 13:27:13 -0700 Subject: [PATCH] [Settings] Fix crashes caused by null bluetooth adapter and ethernet manager Emulator system image doesn't support bluetooth and ethernet manager yet. BUG: 150408099 Signed-off-by: Weilun Du Change-Id: Iab4f7b962f01755fe7d84956f9b54374f1e17408 (cherry picked from commit 08e95d0db0ee336a6a6681a5d820b28c6d7db67a) --- src/com/android/settings/TetherSettings.java | 10 ++++++---- src/com/android/settings/network/TetherEnabler.java | 5 +++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/com/android/settings/TetherSettings.java b/src/com/android/settings/TetherSettings.java index c61e5739948..ac758dccc35 100644 --- a/src/com/android/settings/TetherSettings.java +++ b/src/com/android/settings/TetherSettings.java @@ -172,7 +172,7 @@ public class TetherSettings extends RestrictedSettingsFragment com.android.internal.R.string.config_ethernet_iface_regex); final boolean usbAvailable = mUsbRegexs.length != 0; - final boolean bluetoothAvailable = mBluetoothRegexs.length != 0; + final boolean bluetoothAvailable = adapter != null && mBluetoothRegexs.length != 0; final boolean ethernetAvailable = !TextUtils.isEmpty(mEthernetRegex); if (!usbAvailable || Utils.isMonkeyRunning()) { @@ -326,7 +326,8 @@ public class TetherSettings extends RestrictedSettingsFragment if (intent != null) mTetherChangeReceiver.onReceive(activity, intent); mEthernetListener = new EthernetListener(); - mEm.addListener(mEthernetListener); + if (mEm != null) + mEm.addListener(mEthernetListener); updateState(); } @@ -340,7 +341,8 @@ public class TetherSettings extends RestrictedSettingsFragment } getActivity().unregisterReceiver(mTetherChangeReceiver); mTm.unregisterTetheringEventCallback(mTetheringEventCallback); - mEm.removeListener(mEthernetListener); + if (mEm != null) + mEm.removeListener(mEthernetListener); mTetherChangeReceiver = null; mStartTetheringCallback = null; mTetheringEventCallback = null; @@ -438,7 +440,7 @@ public class TetherSettings extends RestrictedSettingsFragment if (isTethered) { mEthernetTether.setEnabled(!mDataSaverEnabled); mEthernetTether.setChecked(true); - } else if (isAvailable || mEm.isAvailable()) { + } else if (isAvailable || (mEm != null && mEm.isAvailable())) { mEthernetTether.setEnabled(!mDataSaverEnabled); mEthernetTether.setChecked(false); } else { diff --git a/src/com/android/settings/network/TetherEnabler.java b/src/com/android/settings/network/TetherEnabler.java index c4b36d32c9d..87832d99817 100644 --- a/src/com/android/settings/network/TetherEnabler.java +++ b/src/com/android/settings/network/TetherEnabler.java @@ -212,7 +212,8 @@ public class TetherEnabler implements SwitchWidgetController.OnSwitchChangeListe // Only check bluetooth tethering state if not stopped by user already. if (!mBluetoothTetheringStoppedByUser) { final BluetoothPan pan = mBluetoothPan.get(); - if (mBluetoothAdapter.getState() == BluetoothAdapter.STATE_ON + if (mBluetoothAdapter != null && + mBluetoothAdapter.getState() == BluetoothAdapter.STATE_ON && pan != null && pan.isTetheringOn()) { tetherState |= TETHERING_BLUETOOTH_ON; } @@ -279,7 +280,7 @@ public class TetherEnabler implements SwitchWidgetController.OnSwitchChangeListe if (choice == TETHERING_BLUETOOTH) { mBluetoothTetheringStoppedByUser = false; - if (isBluetoothTethering(state)) { + if (mBluetoothAdapter == null || isBluetoothTethering(state)) { return; } else if (mBluetoothAdapter.getState() == BluetoothAdapter.STATE_OFF) { if (DEBUG) {