diff --git a/AndroidManifest.xml b/AndroidManifest.xml index b645f9f4186..30be2551dbe 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -68,6 +68,7 @@ + Enable Bluetooth HCI snoop log Capture all bluetooth HCI packets in a file + + Enable OEM unlock + + Allow the device to be OEM unlocked Wireless display certification diff --git a/res/xml/development_prefs.xml b/res/xml/development_prefs.xml index ba93c7a2240..854aa97b407 100644 --- a/res/xml/development_prefs.xml +++ b/res/xml/development_prefs.xml @@ -49,6 +49,11 @@ android:title="@string/bt_hci_snoop_log" android:summary="@string/bt_hci_snoop_log_summary"/> + + mAllPrefs = new ArrayList(); + private final ArrayList mResetCbPrefs = new ArrayList(); private final HashSet mDisabledPrefs = new HashSet(); - // To track whether a confirmation dialog was clicked. private boolean mDialogClicked; private Dialog mEnableDialog; private Dialog mAdbDialog; - private Dialog mAdbKeysDialog; + private Dialog mAdbKeysDialog; private boolean mUnavailable; @Override @@ -282,10 +287,15 @@ public class DevelopmentSettings extends SettingsPreferenceFragment mBugreportInPower = findAndInitCheckboxPref(BUGREPORT_IN_POWER_KEY); mKeepScreenOn = findAndInitCheckboxPref(KEEP_SCREEN_ON); mBtHciSnoopLog = findAndInitCheckboxPref(BT_HCI_SNOOP_LOG); + mEnableOemUnlock = findAndInitCheckboxPref(ENABLE_OEM_UNLOCK); + if (!showEnableOemUnlockPreference()) { + removePreference(mEnableOemUnlock); + } mAllowMockLocation = findAndInitCheckboxPref(ALLOW_MOCK_LOCATION); mPassword = (PreferenceScreen) findPreference(LOCAL_BACKUP_PASSWORD); mAllPrefs.add(mPassword); + if (!android.os.Process.myUserHandle().equals(UserHandle.OWNER)) { disableForUser(mEnableAdb); disableForUser(mClearAdbKeys); @@ -500,6 +510,7 @@ public class DevelopmentSettings extends SettingsPreferenceFragment Settings.Global.STAY_ON_WHILE_PLUGGED_IN, 0) != 0); updateCheckBox(mBtHciSnoopLog, Settings.Secure.getInt(cr, Settings.Secure.BLUETOOTH_HCI_LOG, 0) != 0); + updateCheckBox(mEnableOemUnlock, Utils.isOemUnlockEnabled(getActivity())); updateCheckBox(mAllowMockLocation, Settings.Secure.getInt(cr, Settings.Secure.ALLOW_MOCK_LOCATION, 0) != 0); updateHdcpValues(); @@ -674,6 +685,10 @@ public class DevelopmentSettings extends SettingsPreferenceFragment Settings.Global.PACKAGE_VERIFIER_SETTING_VISIBLE, 1) > 0; } + private static boolean showEnableOemUnlockPreference() { + return !SystemProperties.get(PERSISTENT_DATA_BLOCK_PROP).equals(""); + } + private void updateBugreportOptions() { if ("user".equals(Build.TYPE)) { final ContentResolver resolver = getActivity().getContentResolver(); @@ -1317,9 +1332,11 @@ public class DevelopmentSettings extends SettingsPreferenceFragment Settings.Global.putInt(getActivity().getContentResolver(), Settings.Global.STAY_ON_WHILE_PLUGGED_IN, mKeepScreenOn.isChecked() ? - (BatteryManager.BATTERY_PLUGGED_AC | BatteryManager.BATTERY_PLUGGED_USB) : 0); + (BatteryManager.BATTERY_PLUGGED_AC | BatteryManager.BATTERY_PLUGGED_USB) : 0); } else if (preference == mBtHciSnoopLog) { writeBtHciSnoopLogOptions(); + } else if (preference == mEnableOemUnlock) { + Utils.setOemUnlockEnabled(getActivity(), mEnableOemUnlock.isChecked()); } else if (preference == mAllowMockLocation) { Settings.Secure.putInt(getActivity().getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION, @@ -1535,4 +1552,27 @@ public class DevelopmentSettings extends SettingsPreferenceFragment return false; } } + + /** + * For Search. + */ + public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = + new BaseSearchIndexProvider() { + @Override + public List getXmlResourcesToIndex( + Context context, boolean enabled) { + final SearchIndexableResource sir = new SearchIndexableResource(context); + sir.xmlResId = R.xml.development_prefs; + return Arrays.asList(sir); + } + + @Override + public List getNonIndexableKeys(Context context) { + final List keys = new ArrayList(); + if (!showEnableOemUnlockPreference()) { + keys.add(ENABLE_OEM_UNLOCK); + } + return keys; + } + }; } diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java index 692d8f3bc6b..82118168d9b 100644 --- a/src/com/android/settings/Utils.java +++ b/src/com/android/settings/Utils.java @@ -18,14 +18,12 @@ package com.android.settings; import android.app.ActivityManager; import android.app.AlertDialog; -import android.app.AlertDialog.Builder; import android.app.Dialog; import android.app.Fragment; import android.app.IActivityManager; import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; -import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; @@ -55,6 +53,7 @@ import android.provider.ContactsContract.Contacts; import android.provider.ContactsContract.Data; import android.provider.ContactsContract.Profile; import android.provider.ContactsContract.RawContacts; +import android.service.persistentdata.PersistentDataBlockManager; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.Log; @@ -62,8 +61,6 @@ import android.view.View; import android.view.ViewGroup; import android.widget.ListView; import android.widget.TabWidget; - -import com.android.settings.R.string; import com.android.settings.dashboard.DashboardCategory; import com.android.settings.dashboard.DashboardTile; @@ -670,4 +667,23 @@ public final class Utils { .create(); return dlg; } + + /** + * Returns whether or not this device is able to be OEM unlocked. + */ + static boolean isOemUnlockEnabled(Context context) { + PersistentDataBlockManager manager =(PersistentDataBlockManager) + context.getSystemService(Context.PERSISTENT_DATA_BLOCK_SERVICE); + return manager.getOemUnlockEnabled(); + } + + /** + * Allows enabling or disabling OEM unlock on this device. OEM unlocked + * devices allow users to flash other OSes to them. + */ + static void setOemUnlockEnabled(Context context, boolean enabled) { + PersistentDataBlockManager manager =(PersistentDataBlockManager) + context.getSystemService(Context.PERSISTENT_DATA_BLOCK_SERVICE); + manager.setOemUnlockEnabled(enabled); + } } diff --git a/src/com/android/settings/search/SearchIndexableResources.java b/src/com/android/settings/search/SearchIndexableResources.java index 287d78f59e1..4e35a726737 100644 --- a/src/com/android/settings/search/SearchIndexableResources.java +++ b/src/com/android/settings/search/SearchIndexableResources.java @@ -245,7 +245,7 @@ public final class SearchIndexableResources { sResMap.put(DevelopmentSettings.class.getName(), new SearchIndexableResource( Ranking.getRankForClassName(DevelopmentSettings.class.getName()), - R.xml.development_prefs, + NO_DATA_RES_ID, DevelopmentSettings.class.getName(), R.drawable.ic_settings_development));