[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 <wdu@google.com>
Change-Id: Iab4f7b962f01755fe7d84956f9b54374f1e17408
This commit is contained in:
Weilun Du
2020-03-30 13:27:13 -07:00
parent f338218348
commit 08e95d0db0
2 changed files with 9 additions and 6 deletions

View File

@@ -172,7 +172,7 @@ public class TetherSettings extends RestrictedSettingsFragment
com.android.internal.R.string.config_ethernet_iface_regex); com.android.internal.R.string.config_ethernet_iface_regex);
final boolean usbAvailable = mUsbRegexs.length != 0; 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); final boolean ethernetAvailable = !TextUtils.isEmpty(mEthernetRegex);
if (!usbAvailable || Utils.isMonkeyRunning()) { if (!usbAvailable || Utils.isMonkeyRunning()) {
@@ -326,7 +326,8 @@ public class TetherSettings extends RestrictedSettingsFragment
if (intent != null) mTetherChangeReceiver.onReceive(activity, intent); if (intent != null) mTetherChangeReceiver.onReceive(activity, intent);
mEthernetListener = new EthernetListener(); mEthernetListener = new EthernetListener();
mEm.addListener(mEthernetListener); if (mEm != null)
mEm.addListener(mEthernetListener);
updateState(); updateState();
} }
@@ -340,7 +341,8 @@ public class TetherSettings extends RestrictedSettingsFragment
} }
getActivity().unregisterReceiver(mTetherChangeReceiver); getActivity().unregisterReceiver(mTetherChangeReceiver);
mTm.unregisterTetheringEventCallback(mTetheringEventCallback); mTm.unregisterTetheringEventCallback(mTetheringEventCallback);
mEm.removeListener(mEthernetListener); if (mEm != null)
mEm.removeListener(mEthernetListener);
mTetherChangeReceiver = null; mTetherChangeReceiver = null;
mStartTetheringCallback = null; mStartTetheringCallback = null;
mTetheringEventCallback = null; mTetheringEventCallback = null;
@@ -438,7 +440,7 @@ public class TetherSettings extends RestrictedSettingsFragment
if (isTethered) { if (isTethered) {
mEthernetTether.setEnabled(!mDataSaverEnabled); mEthernetTether.setEnabled(!mDataSaverEnabled);
mEthernetTether.setChecked(true); mEthernetTether.setChecked(true);
} else if (isAvailable || mEm.isAvailable()) { } else if (isAvailable || (mEm != null && mEm.isAvailable())) {
mEthernetTether.setEnabled(!mDataSaverEnabled); mEthernetTether.setEnabled(!mDataSaverEnabled);
mEthernetTether.setChecked(false); mEthernetTether.setChecked(false);
} else { } else {

View File

@@ -212,7 +212,8 @@ public class TetherEnabler implements SwitchWidgetController.OnSwitchChangeListe
// Only check bluetooth tethering state if not stopped by user already. // Only check bluetooth tethering state if not stopped by user already.
if (!mBluetoothTetheringStoppedByUser) { if (!mBluetoothTetheringStoppedByUser) {
final BluetoothPan pan = mBluetoothPan.get(); final BluetoothPan pan = mBluetoothPan.get();
if (mBluetoothAdapter.getState() == BluetoothAdapter.STATE_ON if (mBluetoothAdapter != null &&
mBluetoothAdapter.getState() == BluetoothAdapter.STATE_ON
&& pan != null && pan.isTetheringOn()) { && pan != null && pan.isTetheringOn()) {
tetherState |= TETHERING_BLUETOOTH_ON; tetherState |= TETHERING_BLUETOOTH_ON;
} }
@@ -279,7 +280,7 @@ public class TetherEnabler implements SwitchWidgetController.OnSwitchChangeListe
if (choice == TETHERING_BLUETOOTH) { if (choice == TETHERING_BLUETOOTH) {
mBluetoothTetheringStoppedByUser = false; mBluetoothTetheringStoppedByUser = false;
if (isBluetoothTethering(state)) { if (mBluetoothAdapter == null || isBluetoothTethering(state)) {
return; return;
} else if (mBluetoothAdapter.getState() == BluetoothAdapter.STATE_OFF) { } else if (mBluetoothAdapter.getState() == BluetoothAdapter.STATE_OFF) {
if (DEBUG) { if (DEBUG) {