From 9bc365febd0204ae043613422649bd779d215fb8 Mon Sep 17 00:00:00 2001 From: bohu Date: Thu, 14 Feb 2019 08:23:25 -0800 Subject: 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 --- .../development/OemUnlockPreferenceController.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src/com/android/settings/development/OemUnlockPreferenceController.java') 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; -- cgit v1.2.3