diff options
-rw-r--r-- | AndroidManifest.xml | 1 | ||||
-rw-r--r-- | res/values/strings.xml | 4 | ||||
-rw-r--r-- | res/xml/development_prefs.xml | 5 | ||||
-rw-r--r-- | src/com/android/settings/DevelopmentSettings.java | 62 | ||||
-rw-r--r-- | src/com/android/settings/Utils.java | 24 | ||||
-rw-r--r-- | src/com/android/settings/search/SearchIndexableResources.java | 2 |
6 files changed, 82 insertions, 16 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index b645f9f..30be255 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -68,6 +68,7 @@ <uses-permission android:name="android.permission.REBOOT" /> <uses-permission android:name="android.permission.MANAGE_DEVICE_ADMINS" /> <uses-permission android:name="android.permission.READ_SEARCH_INDEXABLES" /> + <uses-permission android:name="android.permission.OEM_UNLOCK_STATE" /> <application android:label="@string/settings_label" android:icon="@mipmap/ic_launcher_settings" diff --git a/res/values/strings.xml b/res/values/strings.xml index bf975e2..b41f8f4 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -3174,6 +3174,10 @@ <string name="bt_hci_snoop_log">Enable Bluetooth HCI snoop log</string> <!-- setting Checkbox summary whether to capture all bluetooth HCI packets in a file --> <string name="bt_hci_snoop_log_summary">Capture all bluetooth HCI packets in a file</string> + <!-- setting Checkbox title whether to enable OEM unlock [CHAR_LIMIT=25] --> + <string name="oem_unlock_enable">Enable OEM unlock</string> + <!-- setting Checkbox summary whether to enable OEM unlock [CHAR_LIMIT=50] --> + <string name="oem_unlock_enable_summary">Allow the device to be OEM unlocked</string> <!-- Setting Checkbox title whether to show options for wireless display certification --> <string name="wifi_display_certification">Wireless display certification</string> diff --git a/res/xml/development_prefs.xml b/res/xml/development_prefs.xml index ba93c7a..854aa97 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"/> + <CheckBoxPreference + android:key="oem_unlock_enable" + android:title="@string/oem_unlock_enable" + android:summary="@string/oem_unlock_enable_summary"/> + <PreferenceScreen android:key="proc_stats" android:title="@string/process_stats_summary_title" android:summary="@string/process_stats_summary" diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java index 00a0b92..4c2b90d 100644 --- a/src/com/android/settings/DevelopmentSettings.java +++ b/src/com/android/settings/DevelopmentSettings.java @@ -26,7 +26,6 @@ import android.bluetooth.BluetoothAdapter; 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; @@ -40,7 +39,6 @@ import android.os.Build; import android.os.Bundle; import android.os.IBinder; import android.os.Parcel; -import android.os.PowerManager; import android.os.RemoteException; import android.os.ServiceManager; import android.os.StrictMode; @@ -53,6 +51,7 @@ import android.preference.Preference; import android.preference.Preference.OnPreferenceChangeListener; import android.preference.PreferenceGroup; import android.preference.PreferenceScreen; +import android.provider.SearchIndexableResource; import android.provider.Settings; import android.text.TextUtils; import android.util.Log; @@ -64,11 +63,13 @@ import android.webkit.WebView; import android.widget.Switch; import android.widget.TextView; +import com.android.settings.search.BaseSearchIndexProvider; +import com.android.settings.search.Indexable; import com.android.settings.widget.SwitchBar; import dalvik.system.VMRuntime; -import java.io.File; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashSet; import java.util.List; @@ -77,7 +78,7 @@ import java.util.List; */ public class DevelopmentSettings extends SettingsPreferenceFragment implements DialogInterface.OnClickListener, DialogInterface.OnDismissListener, - OnPreferenceChangeListener, SwitchBar.OnSwitchChangeListener { + OnPreferenceChangeListener, SwitchBar.OnSwitchChangeListener, Indexable { private static final String TAG = "DevelopmentSettings"; /** @@ -95,6 +96,7 @@ public class DevelopmentSettings extends SettingsPreferenceFragment private static final String ENABLE_TERMINAL = "enable_terminal"; private static final String KEEP_SCREEN_ON = "keep_screen_on"; private static final String BT_HCI_SNOOP_LOG = "bt_hci_snoop_log"; + private static final String ENABLE_OEM_UNLOCK = "oem_unlock_enable"; private static final String ALLOW_MOCK_LOCATION = "allow_mock_location"; private static final String HDCP_CHECKING_KEY = "hdcp_checking"; private static final String HDCP_CHECKING_PROPERTY = "persist.sys.hdcp_checking"; @@ -160,6 +162,8 @@ public class DevelopmentSettings extends SettingsPreferenceFragment private static final int RESULT_DEBUG_APP = 1000; + private static final String PERSISTENT_DATA_BLOCK_PROP = "ro.frp.pst"; + private static String DEFAULT_LOG_RING_BUFFER_SIZE_IN_BYTES = "262144"; // 256K private IWindowManager mWindowManager; @@ -180,9 +184,10 @@ public class DevelopmentSettings extends SettingsPreferenceFragment private CheckBoxPreference mBugreportInPower; private CheckBoxPreference mKeepScreenOn; private CheckBoxPreference mBtHciSnoopLog; + private CheckBoxPreference mEnableOemUnlock; private CheckBoxPreference mAllowMockLocation; - private PreferenceScreen mPassword; + private PreferenceScreen mPassword; private String mDebugApp; private Preference mDebugAppPref; private CheckBoxPreference mWaitForDebugger; @@ -190,8 +195,8 @@ public class DevelopmentSettings extends SettingsPreferenceFragment private CheckBoxPreference mWifiDisplayCertification; private CheckBoxPreference mWifiVerboseLogging; private CheckBoxPreference mWifiAggressiveHandover; - private CheckBoxPreference mWifiAllowScansWithTraffic; + private CheckBoxPreference mWifiAllowScansWithTraffic; private CheckBoxPreference mStrictMode; private CheckBoxPreference mPointerLocation; private CheckBoxPreference mShowTouches; @@ -213,11 +218,12 @@ public class DevelopmentSettings extends SettingsPreferenceFragment private ListPreference mAnimatorDurationScale; private ListPreference mOverlayDisplayDevices; private ListPreference mOpenGLTraces; + private ListPreference mSimulateColorSpace; private CheckBoxPreference mUseNuplayer; - private CheckBoxPreference mImmediatelyDestroyActivities; + private ListPreference mAppProcessLimit; private CheckBoxPreference mShowAllANRs; @@ -225,19 +231,18 @@ public class DevelopmentSettings extends SettingsPreferenceFragment private CheckBoxPreference mWebViewDataReductionProxy; private PreferenceScreen mProcessStats; - private final ArrayList<Preference> mAllPrefs = new ArrayList<Preference>(); + private final ArrayList<CheckBoxPreference> mResetCbPrefs = new ArrayList<CheckBoxPreference>(); private final HashSet<Preference> mDisabledPrefs = new HashSet<Preference>(); - // 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<SearchIndexableResource> getXmlResourcesToIndex( + Context context, boolean enabled) { + final SearchIndexableResource sir = new SearchIndexableResource(context); + sir.xmlResId = R.xml.development_prefs; + return Arrays.asList(sir); + } + + @Override + public List<String> getNonIndexableKeys(Context context) { + final List<String> keys = new ArrayList<String>(); + 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 692d8f3..8211816 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 287d78f..4e35a72 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)); |