diff --git a/res/drawable-hdpi/ic_settings_battery.png b/res/drawable-hdpi/ic_settings_battery.png new file mode 100755 index 00000000000..e3b0fb3f7c1 Binary files /dev/null and b/res/drawable-hdpi/ic_settings_battery.png differ diff --git a/res/drawable-hdpi/ic_settings_development.png b/res/drawable-hdpi/ic_settings_development.png new file mode 100755 index 00000000000..e3b0fb3f7c1 Binary files /dev/null and b/res/drawable-hdpi/ic_settings_development.png differ diff --git a/res/drawable-mdpi/ic_settings_battery.png b/res/drawable-mdpi/ic_settings_battery.png new file mode 100644 index 00000000000..e1f478bd7cc Binary files /dev/null and b/res/drawable-mdpi/ic_settings_battery.png differ diff --git a/res/drawable-mdpi/ic_settings_development.png b/res/drawable-mdpi/ic_settings_development.png new file mode 100644 index 00000000000..e1f478bd7cc Binary files /dev/null and b/res/drawable-mdpi/ic_settings_development.png differ diff --git a/res/values/strings.xml b/res/values/strings.xml index 7d4da0026f2..dc18cfc7101 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1321,7 +1321,7 @@ Sound - Screen + Display Sound settings @@ -2668,7 +2668,7 @@ found in the list of installed applications. - Battery use + Battery What has been using the battery @@ -3118,11 +3118,11 @@ found in the list of installed applications. Set behavior when an emergency call is placed - - - Privacy + + + Backup & reset - Privacy settings + Backup & reset Backup and restore diff --git a/res/xml/application_settings.xml b/res/xml/application_settings.xml index 3ad1e5dbb03..3329662871b 100644 --- a/res/xml/application_settings.xml +++ b/res/xml/application_settings.xml @@ -14,6 +14,13 @@ limitations under the License. --> + + - - - - - --> - - - - diff --git a/res/xml/security_settings_misc.xml b/res/xml/security_settings_misc.xml index 95b2aca3643..e996f707010 100644 --- a/res/xml/security_settings_misc.xml +++ b/res/xml/security_settings_misc.xml @@ -39,10 +39,19 @@ + + + + + +
+
@@ -133,13 +140,6 @@ android:title="@string/security_settings_title" android:id="@+id/security_settings" /> - -
-
+ +
+
@@ -172,6 +179,13 @@ android:icon="@drawable/ic_settings_accessibility" android:title="@string/accessibility_settings" /> + +
+
0; - } - private String getAppInstallLocation() { int selectedLocation = Settings.System.getInt(getContentResolver(), Settings.Secure.DEFAULT_INSTALL_LOCATION, APP_INSTALL_AUTO); @@ -179,15 +134,4 @@ public class ApplicationSettings extends SettingsPreferenceFragment implements return APP_INSTALL_AUTO_ID; } } - - private void warnAppInstallation() { - // TODO: DialogFragment? - mWarnInstallApps = new AlertDialog.Builder(getActivity()).setTitle( - getResources().getString(R.string.error_title)) - .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) - .show(); - } } diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java index fc91e78492f..057e5deb725 100644 --- a/src/com/android/settings/SecuritySettings.java +++ b/src/com/android/settings/SecuritySettings.java @@ -19,8 +19,10 @@ package com.android.settings; import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT; +import android.app.AlertDialog; import android.app.admin.DevicePolicyManager; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.os.Vibrator; @@ -43,7 +45,7 @@ import java.util.ArrayList; * Gesture lock pattern settings. */ public class SecuritySettings extends SettingsPreferenceFragment - implements OnPreferenceChangeListener { + implements OnPreferenceChangeListener, DialogInterface.OnClickListener { // Lock Settings private static final String KEY_UNLOCK_SET_OR_CHANGE = "unlock_set_or_change"; @@ -58,6 +60,7 @@ public class SecuritySettings extends SettingsPreferenceFragment private static final String KEY_SIM_LOCK = "sim_lock"; private static final String KEY_SHOW_PASSWORD = "show_password"; private static final String KEY_RESET_CREDENTIALS = "reset_credentials"; + private static final String KEY_TOGGLE_INSTALL_APPLICATIONS = "toggle_install_applications"; DevicePolicyManager mDPM; @@ -72,6 +75,9 @@ public class SecuritySettings extends SettingsPreferenceFragment private Preference mResetCredentials; + private CheckBoxPreference mToggleAppInstallation; + private DialogInterface mWarnInstallApps; + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -167,9 +173,50 @@ public class SecuritySettings extends SettingsPreferenceFragment // Credential storage mResetCredentials = root.findPreference(KEY_RESET_CREDENTIALS); + mToggleAppInstallation = (CheckBoxPreference) findPreference( + KEY_TOGGLE_INSTALL_APPLICATIONS); + mToggleAppInstallation.setChecked(isNonMarketAppsAllowed()); + return root; } + private boolean isNonMarketAppsAllowed() { + return Settings.Secure.getInt(getContentResolver(), + Settings.Secure.INSTALL_NON_MARKET_APPS, 0) > 0; + } + + private void setNonMarketAppsAllowed(boolean enabled) { + // Change the system setting + Settings.Secure.putInt(getContentResolver(), Settings.Secure.INSTALL_NON_MARKET_APPS, + enabled ? 1 : 0); + } + + private void warnAppInstallation() { + // TODO: DialogFragment? + mWarnInstallApps = new AlertDialog.Builder(getActivity()).setTitle( + getResources().getString(R.string.error_title)) + .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) + .show(); + } + + public void onClick(DialogInterface dialog, int which) { + if (dialog == mWarnInstallApps && which == DialogInterface.BUTTON_POSITIVE) { + setNonMarketAppsAllowed(true); + mToggleAppInstallation.setChecked(true); + } + } + + @Override + public void onDestroy() { + super.onDestroy(); + if (mWarnInstallApps != null) { + mWarnInstallApps.dismiss(); + } + } + private void setupLockAfterPreference() { // Compatible with pre-Froyo long currentTimeout = Settings.Secure.getLong(getContentResolver(), @@ -272,6 +319,13 @@ public class SecuritySettings extends SettingsPreferenceFragment } else if (preference == mShowPassword) { Settings.System.putInt(getContentResolver(), Settings.System.TEXT_SHOW_PASSWORD, mShowPassword.isChecked() ? 1 : 0); + } else if (preference == mToggleAppInstallation) { + if (mToggleAppInstallation.isChecked()) { + mToggleAppInstallation.setChecked(false); + warnAppInstallation(); + } else { + setNonMarketAppsAllowed(false); + } } else { // If we didn't handle it, let preferences handle it. return super.onPreferenceTreeClick(preferenceScreen, preference);