diff options
-rw-r--r-- | AndroidManifest.xml | 6 | ||||
-rw-r--r-- | res/xml/privacy_settings.xml | 4 | ||||
-rw-r--r-- | src/com/android/settings/ConfirmDeviceCredentialActivity.java | 5 | ||||
-rw-r--r-- | src/com/android/settings/DevelopmentSettings.java | 6 | ||||
-rw-r--r-- | src/com/android/settings/PrivacySettings.java | 75 | ||||
-rw-r--r-- | src/com/android/settings/SecuritySettings.java | 9 | ||||
-rw-r--r-- | src/com/android/settings/SettingsPreferenceFragment.java | 26 | ||||
-rw-r--r-- | src/com/android/settings/vpn2/VpnSettings.java | 2 |
8 files changed, 79 insertions, 54 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 63cb07c..6ff3639 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1109,7 +1109,11 @@ <!-- Lock screen settings --> <activity android:name="ConfirmDeviceCredentialActivity" android:exported="true"> - <!-- Use high-priority to prevent an installed activity from masquerading as this one. --> + <intent-filter> + <action android:name="android.app.action.CONFIRM_DEVICE_CREDENTIAL" /> + <category android:name="android.intent.category.DEFAULT" /> + </intent-filter> + <!-- TODO: Remove this once new API is being used --> <intent-filter android:priority="1000"> <action android:name="android.intent.action.CONFIRM_DEVICE_CREDENTIAL" /> <category android:name="android.intent.category.DEFAULT" /> diff --git a/res/xml/privacy_settings.xml b/res/xml/privacy_settings.xml index 99fdc3f..44894e7 100644 --- a/res/xml/privacy_settings.xml +++ b/res/xml/privacy_settings.xml @@ -22,7 +22,7 @@ android:title="@string/backup_section_title"> <!-- Backup settings --> - <CheckBoxPreference + <SwitchPreference android:key="backup_data" android:title="@string/backup_data_title" android:summary="@string/backup_data_summary" @@ -37,7 +37,7 @@ <intent android:action="dummy" /> </PreferenceScreen> - <CheckBoxPreference + <SwitchPreference android:key="auto_restore" android:title="@string/auto_restore_title" android:summary="@string/auto_restore_summary" diff --git a/src/com/android/settings/ConfirmDeviceCredentialActivity.java b/src/com/android/settings/ConfirmDeviceCredentialActivity.java index 6a5c486..6b2bfd2 100644 --- a/src/com/android/settings/ConfirmDeviceCredentialActivity.java +++ b/src/com/android/settings/ConfirmDeviceCredentialActivity.java @@ -18,6 +18,7 @@ package com.android.settings; import android.app.Activity; +import android.app.KeyguardManager; import android.content.Intent; import android.os.Bundle; import android.util.Log; @@ -34,8 +35,8 @@ public class ConfirmDeviceCredentialActivity extends Activity { super.onCreate(savedInstanceState); Intent intent = getIntent(); - String title = intent.getStringExtra(Intent.EXTRA_TITLE); - String details = intent.getStringExtra(Intent.EXTRA_DETAILS); + String title = intent.getStringExtra(KeyguardManager.EXTRA_TITLE); + String details = intent.getStringExtra(KeyguardManager.EXTRA_DESCRIPTION); ChooseLockSettingsHelper helper = new ChooseLockSettingsHelper(this); if (!helper.launchConfirmationActivity(0 /* request code */, title, details)) { diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java index 7b12e6f..11dc3c6 100644 --- a/src/com/android/settings/DevelopmentSettings.java +++ b/src/com/android/settings/DevelopmentSettings.java @@ -369,12 +369,6 @@ public class DevelopmentSettings extends SettingsPreferenceFragment mAllPrefs.add(mProcessStats); mWebViewDataReductionProxy = findAndInitCheckboxPref(WEBVIEW_DATA_REDUCTION_PROXY_KEY); - String key = Settings.Global.getString(getActivity().getContentResolver(), - Settings.Global.WEBVIEW_DATA_REDUCTION_PROXY_KEY); - // Disable the selection if the key is not available for some reason. - if (key == null || key.isEmpty()) { - disableForUser(mWebViewDataReductionProxy); - } } private ListPreference addListPreference(String prefKey) { diff --git a/src/com/android/settings/PrivacySettings.java b/src/com/android/settings/PrivacySettings.java index aac7638..95a81d1 100644 --- a/src/com/android/settings/PrivacySettings.java +++ b/src/com/android/settings/PrivacySettings.java @@ -27,9 +27,10 @@ import android.os.Bundle; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserManager; -import android.preference.CheckBoxPreference; import android.preference.Preference; +import android.preference.Preference.OnPreferenceChangeListener; import android.preference.PreferenceScreen; +import android.preference.SwitchPreference; import android.provider.Settings; /** @@ -46,8 +47,8 @@ public class PrivacySettings extends SettingsPreferenceFragment implements private static final String CONFIGURE_ACCOUNT = "configure_account"; private static final String PERSONAL_DATA_CATEGORY = "personal_data_category"; private IBackupManager mBackupManager; - private CheckBoxPreference mBackup; - private CheckBoxPreference mAutoRestore; + private SwitchPreference mBackup; + private SwitchPreference mAutoRestore; private Dialog mConfirmDialog; private PreferenceScreen mConfigure; @@ -63,8 +64,12 @@ public class PrivacySettings extends SettingsPreferenceFragment implements mBackupManager = IBackupManager.Stub.asInterface( ServiceManager.getService(Context.BACKUP_SERVICE)); - mBackup = (CheckBoxPreference) screen.findPreference(BACKUP_DATA); - mAutoRestore = (CheckBoxPreference) screen.findPreference(AUTO_RESTORE); + mBackup = (SwitchPreference) screen.findPreference(BACKUP_DATA); + mBackup.setOnPreferenceChangeListener(preferenceChangeListener); + + mAutoRestore = (SwitchPreference) screen.findPreference(AUTO_RESTORE); + mAutoRestore.setOnPreferenceChangeListener(preferenceChangeListener); + mConfigure = (PreferenceScreen) screen.findPreference(CONFIGURE_ACCOUNT); if (UserManager.get(getActivity()).hasUserRestriction( @@ -98,29 +103,34 @@ public class PrivacySettings extends SettingsPreferenceFragment implements super.onStop(); } - @Override - public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, - Preference preference) { - if (preference == mBackup) { - if (!mBackup.isChecked()) { - showEraseBackupDialog(); - } else { - setBackupEnabled(true); + private OnPreferenceChangeListener preferenceChangeListener = new OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + if (!(preference instanceof SwitchPreference)) { + return true; } - } else if (preference == mAutoRestore) { - boolean curState = mAutoRestore.isChecked(); - try { - mBackupManager.setAutoRestore(curState); - } catch (RemoteException e) { - mAutoRestore.setChecked(!curState); + boolean nextValue = (Boolean) newValue; + boolean result = false; + if (preference == mBackup) { + if (nextValue == false) { + showEraseBackupDialog(); + } else { + setBackupEnabled(true); + } + result = true; + } else if (preference == mAutoRestore) { + try { + mBackupManager.setAutoRestore(nextValue); + result = true; + } catch (RemoteException e) { + mAutoRestore.setChecked(!nextValue); + } } + return result; } - return super.onPreferenceTreeClick(preferenceScreen, preference); - } + }; private void showEraseBackupDialog() { - mBackup.setChecked(true); - mDialogType = DIALOG_ERASE_BACKUP; CharSequence msg = getResources().getText(R.string.backup_erase_dialog_message); // TODO: DialogFragment? @@ -159,7 +169,7 @@ public class PrivacySettings extends SettingsPreferenceFragment implements mConfigure.setEnabled(configureEnabled); mConfigure.setIntent(configIntent); setConfigureSummary(configSummary); -} + } private void setConfigureSummary(String summary) { if (summary != null) { @@ -179,13 +189,20 @@ public class PrivacySettings extends SettingsPreferenceFragment implements } } + @Override public void onClick(DialogInterface dialog, int which) { - if (which == DialogInterface.BUTTON_POSITIVE) { - //updateProviders(); - if (mDialogType == DIALOG_ERASE_BACKUP) { + // Dialog is triggered before Switch status change, that means marking the Switch to + // true in showEraseBackupDialog() method will be override by following status change. + // So we do manual switching here due to users' response. + if (mDialogType == DIALOG_ERASE_BACKUP) { + // Accept turning off backup + if (which == DialogInterface.BUTTON_POSITIVE) { setBackupEnabled(false); - updateConfigureSummary(); + } else if (which == DialogInterface.BUTTON_NEGATIVE) { + // Reject turning off backup + setBackupEnabled(true); } + updateConfigureSummary(); } mDialogType = 0; } @@ -214,4 +231,4 @@ public class PrivacySettings extends SettingsPreferenceFragment implements protected int getHelpResource() { return R.string.help_url_backup_reset; } -} +}
\ No newline at end of file diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java index 1b9f44c..f2a0bbb 100644 --- a/src/com/android/settings/SecuritySettings.java +++ b/src/com/android/settings/SecuritySettings.java @@ -404,16 +404,17 @@ public class SecuritySettings extends SettingsPreferenceFragment .setIcon(com.android.internal.R.drawable.ic_dialog_alert) .setMessage(getResources().getString(R.string.install_all_warning)) .setPositiveButton(android.R.string.yes, this) - .setNegativeButton(android.R.string.no, null) + .setNegativeButton(android.R.string.no, this) .show(); } @Override public void onClick(DialogInterface dialog, int which) { - if (dialog == mWarnInstallApps && which == DialogInterface.BUTTON_POSITIVE) { - setNonMarketAppsAllowed(true); + if (dialog == mWarnInstallApps) { + boolean turnOn = which == DialogInterface.BUTTON_POSITIVE; + setNonMarketAppsAllowed(turnOn); if (mToggleAppInstallation != null) { - mToggleAppInstallation.setChecked(true); + mToggleAppInstallation.setChecked(turnOn); } } } diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java index f89b72e..83b3a68 100644 --- a/src/com/android/settings/SettingsPreferenceFragment.java +++ b/src/com/android/settings/SettingsPreferenceFragment.java @@ -66,7 +66,7 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di private boolean mPreferenceHighlighted = false; private Drawable mHighlightDrawable; - private Object mRegisterLock = new Object(); + private ListAdapter mCurrentRootAdapter; private boolean mIsDataSetObserverRegistered = false; private DataSetObserver mDataSetObserver = new DataSetObserver() { @Override @@ -147,6 +147,11 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di } @Override + protected void onUnbindPreferences() { + unregisterObserverIfNeeded(); + } + + @Override public void onStop() { super.onStop(); @@ -154,20 +159,23 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di } public void registerObserverIfNeeded() { - synchronized (mRegisterLock) { - if (!mIsDataSetObserverRegistered) { - getPreferenceScreen().getRootAdapter().registerDataSetObserver(mDataSetObserver); - mIsDataSetObserverRegistered = true; + if (!mIsDataSetObserverRegistered) { + if (mCurrentRootAdapter != null) { + mCurrentRootAdapter.unregisterDataSetObserver(mDataSetObserver); } + mCurrentRootAdapter = getPreferenceScreen().getRootAdapter(); + mCurrentRootAdapter.registerDataSetObserver(mDataSetObserver); + mIsDataSetObserverRegistered = true; } } public void unregisterObserverIfNeeded() { - synchronized (mRegisterLock) { - if (mIsDataSetObserverRegistered) { - getPreferenceScreen().getRootAdapter().unregisterDataSetObserver(mDataSetObserver); - mIsDataSetObserverRegistered = false; + if (mIsDataSetObserverRegistered) { + if (mCurrentRootAdapter != null) { + mCurrentRootAdapter.unregisterDataSetObserver(mDataSetObserver); + mCurrentRootAdapter = null; } + mIsDataSetObserverRegistered = false; } } diff --git a/src/com/android/settings/vpn2/VpnSettings.java b/src/com/android/settings/vpn2/VpnSettings.java index c707b44..d409764 100644 --- a/src/com/android/settings/vpn2/VpnSettings.java +++ b/src/com/android/settings/vpn2/VpnSettings.java @@ -491,7 +491,7 @@ public class VpnSettings extends SettingsPreferenceFragment implements private static class TitleAdapter extends ArrayAdapter<CharSequence> { public TitleAdapter(Context context, List<CharSequence> objects) { - super(context, com.android.internal.R.layout.select_dialog_singlechoice_holo, + super(context, com.android.internal.R.layout.select_dialog_singlechoice_material, android.R.id.text1, objects); } } |