diff options
author | bohu <bohu@google.com> | 2019-02-14 08:23:25 -0800 |
---|---|---|
committer | bohu <bohu@google.com> | 2019-02-21 08:08:12 -0800 |
commit | 9bc365febd0204ae043613422649bd779d215fb8 (patch) | |
tree | ac3420f5eecfdf74e6e5e82e41ac4164ec324614 /src/com/android/settings/development/OemUnlockPreferenceController.java | |
parent | cd15971f1402416d19885fc99164e16cd9897d86 (diff) | |
download | packages_apps_Settings-9bc365febd0204ae043613422649bd779d215fb8.tar.gz packages_apps_Settings-9bc365febd0204ae043613422649bd779d215fb8.tar.bz2 packages_apps_Settings-9bc365febd0204ae043613422649bd779d215fb8.zip |
developer-options: avoid oem-unlock preference controller crash
If there is no FEATURE_TELEPHONY_CARRIERLOCK.
BUG: 123583878
Test: lunch sdk_phone_x86-eng
make -j
emulator
the Settings->System->Developer options should not crash
Test:
make RunSettingsRoboTests ROBOTEST_FILTER=OemUnlockPreferenceControllerTest
should all pass (12 tests: 11 existing and 1 new)
Change-Id: I18c08c1ff1a7860616b0081ede4eb19dcfa8814b
Diffstat (limited to 'src/com/android/settings/development/OemUnlockPreferenceController.java')
-rw-r--r-- | src/com/android/settings/development/OemUnlockPreferenceController.java | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/com/android/settings/development/OemUnlockPreferenceController.java b/src/com/android/settings/development/OemUnlockPreferenceController.java index b6b4d1765e..c6707d6511 100644 --- a/src/com/android/settings/development/OemUnlockPreferenceController.java +++ b/src/com/android/settings/development/OemUnlockPreferenceController.java @@ -21,11 +21,13 @@ import static com.android.settings.development.DevelopmentOptionsActivityRequest import android.app.Activity; import android.content.Context; import android.content.Intent; +import android.content.pm.PackageManager; import android.content.res.Resources; import android.os.UserHandle; import android.os.UserManager; import android.service.oemlock.OemLockManager; import android.telephony.TelephonyManager; +import android.util.Log; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; @@ -41,6 +43,7 @@ public class OemUnlockPreferenceController extends DeveloperOptionsPreferenceCon Preference.OnPreferenceChangeListener, PreferenceControllerMixin, OnActivityResultListener { private static final String PREFERENCE_KEY = "oem_unlock_enable"; + private static final String TAG = "OemUnlockPreferenceController"; private final OemLockManager mOemLockManager; private final UserManager mUserManager; @@ -52,7 +55,16 @@ public class OemUnlockPreferenceController extends DeveloperOptionsPreferenceCon public OemUnlockPreferenceController(Context context, Activity activity, DevelopmentSettingsDashboardFragment fragment) { super(context); - mOemLockManager = (OemLockManager) context.getSystemService(Context.OEM_LOCK_SERVICE); + + if (context.getPackageManager().hasSystemFeature(PackageManager + .FEATURE_TELEPHONY_CARRIERLOCK)) { + mOemLockManager = (OemLockManager) context.getSystemService(Context.OEM_LOCK_SERVICE); + } else { + mOemLockManager = null; + Log.i(TAG, "Missing FEATURE_TELEPHONY_CARRIERLOCK, OemUnlock Preference" + + " Controller disabled."); + } + mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE); mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); mFragment = fragment; |