Do isAvailable() checks when accessing AirplaneEnabler.
This instance is only initialized if isAvailable() returns true in the
first place, so we should check for it everytime we try to access it, or
else we will result in a NPE.
Bug: 271223463
Test: atest AirplaneModePreferenceControllerTest
Change-Id: I43d35b91c86517201c8ec4f458f8c0328a9fb768
diff --git a/src/com/android/settings/network/AirplaneModePreferenceController.java b/src/com/android/settings/network/AirplaneModePreferenceController.java
index 720a334..5b4ce1b 100644
--- a/src/com/android/settings/network/AirplaneModePreferenceController.java
+++ b/src/com/android/settings/network/AirplaneModePreferenceController.java
@@ -79,7 +79,7 @@
@Override
public boolean handlePreferenceTreeClick(Preference preference) {
- if (KEY_AIRPLANE_MODE.equals(preference.getKey())
+ if (KEY_AIRPLANE_MODE.equals(preference.getKey()) && isAvailable()
&& mAirplaneModeEnabler.isInEcmMode()) {
// In ECM mode launch ECM app dialog
if (mFragment != null) {
@@ -141,12 +141,14 @@
@Override
public void onDestroy() {
- mAirplaneModeEnabler.close();
+ if (isAvailable()) {
+ mAirplaneModeEnabler.close();
+ }
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (requestCode == REQUEST_CODE_EXIT_ECM) {
+ if (requestCode == REQUEST_CODE_EXIT_ECM && isAvailable()) {
final boolean isChoiceYes = (resultCode == Activity.RESULT_OK);
// Set Airplane mode based on the return value and checkbox state
mAirplaneModeEnabler.setAirplaneModeInECM(isChoiceYes,
@@ -156,7 +158,7 @@
@Override
public boolean isChecked() {
- return mAirplaneModeEnabler.isAirplaneModeOn();
+ return isAvailable() && mAirplaneModeEnabler.isAirplaneModeOn();
}
@Override
@@ -164,7 +166,9 @@
if (isChecked() == isChecked) {
return false;
}
- mAirplaneModeEnabler.setAirplaneMode(isChecked);
+ if (isAvailable()) {
+ mAirplaneModeEnabler.setAirplaneMode(isChecked);
+ }
return true;
}