summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMaggie Benthall <mbenthall@google.com>2013-03-28 19:17:13 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-03-28 19:17:14 +0000
commit02e8ca3e9ad966bd523241aaa1eecf58865027a8 (patch)
treea07d1ca1a55684094d3e9f3b5d9cff6fd0371931 /src
parent0fb0d016dd51b0d8b882d92de58f5c2ea28a9208 (diff)
parent0c5a401a58b30041d5fe712d78fccbd47f5b744d (diff)
downloadpackages_apps_Settings-02e8ca3e9ad966bd523241aaa1eecf58865027a8.zip
packages_apps_Settings-02e8ca3e9ad966bd523241aaa1eecf58865027a8.tar.gz
packages_apps_Settings-02e8ca3e9ad966bd523241aaa1eecf58865027a8.tar.bz2
Merge "Respect user restrictions about adding/removing accounts, sideloading" into jb-mr2-dev
Diffstat (limited to 'src')
-rw-r--r--src/com/android/settings/LocationSettings.java9
-rw-r--r--src/com/android/settings/SecuritySettings.java24
-rw-r--r--src/com/android/settings/Settings.java9
-rw-r--r--src/com/android/settings/accounts/AccountSyncSettings.java18
-rw-r--r--src/com/android/settings/accounts/AddAccountSettings.java10
-rw-r--r--src/com/android/settings/widget/SettingsAppWidgetProvider.java2
6 files changed, 55 insertions, 17 deletions
diff --git a/src/com/android/settings/LocationSettings.java b/src/com/android/settings/LocationSettings.java
index b73dccd..2edefdf 100644
--- a/src/com/android/settings/LocationSettings.java
+++ b/src/com/android/settings/LocationSettings.java
@@ -96,7 +96,7 @@ public class LocationSettings extends SettingsPreferenceFragment
// Only enable these controls if this user is allowed to change location
// sharing settings.
final UserManager um = (UserManager) getActivity().getSystemService(Context.USER_SERVICE);
- boolean isToggleAllowed = um.isLocationSharingToggleAllowed();
+ boolean isToggleAllowed = !um.hasUserRestriction(UserManager.DISALLOW_SHARE_LOCATION);
if (mLocationAccess != null) mLocationAccess.setEnabled(isToggleAllowed);
if (mNetwork != null) mNetwork.setEnabled(isToggleAllowed);
if (mGps != null) mGps.setEnabled(isToggleAllowed);
@@ -117,6 +117,7 @@ public class LocationSettings extends SettingsPreferenceFragment
if (mSettingsObserver == null) {
mSettingsObserver = new Observer() {
+ @Override
public void update(Observable o, Object arg) {
updateLocationToggles();
}
@@ -131,13 +132,13 @@ public class LocationSettings extends SettingsPreferenceFragment
final ContentResolver cr = getContentResolver();
final UserManager um = (UserManager) getActivity().getSystemService(Context.USER_SERVICE);
if (preference == mNetwork) {
- if (um.isLocationSharingToggleAllowed()) {
+ if (!um.hasUserRestriction(UserManager.DISALLOW_SHARE_LOCATION)) {
Settings.Secure.setLocationProviderEnabled(cr,
LocationManager.NETWORK_PROVIDER, mNetwork.isChecked());
}
} else if (preference == mGps) {
boolean enabled = mGps.isChecked();
- if (um.isLocationSharingToggleAllowed()) {
+ if (!um.hasUserRestriction(UserManager.DISALLOW_SHARE_LOCATION)) {
Settings.Secure.setLocationProviderEnabled(cr,
LocationManager.GPS_PROVIDER, enabled);
if (mAssistedGps != null) {
@@ -186,7 +187,7 @@ public class LocationSettings extends SettingsPreferenceFragment
/** Enable or disable all providers when the master toggle is changed. */
private void onToggleLocationAccess(boolean checked) {
final UserManager um = (UserManager) getActivity().getSystemService(Context.USER_SERVICE);
- if (! um.isLocationSharingToggleAllowed()) {
+ if (um.hasUserRestriction(UserManager.DISALLOW_SHARE_LOCATION)) {
return;
}
final ContentResolver cr = getContentResolver();
diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java
index b51f2f3..00a0e09 100644
--- a/src/com/android/settings/SecuritySettings.java
+++ b/src/com/android/settings/SecuritySettings.java
@@ -236,10 +236,26 @@ public class SecuritySettings extends SettingsPreferenceFragment
removePreference(KEY_CREDENTIALS_MANAGER);
}
+ PreferenceGroup deviceAdminCategory= (PreferenceGroup)
+ root.findPreference(KEY_DEVICE_ADMIN_CATEGORY);
mToggleAppInstallation = (CheckBoxPreference) findPreference(
KEY_TOGGLE_INSTALL_APPLICATIONS);
mToggleAppInstallation.setChecked(isNonMarketAppsAllowed());
+ final UserManager um = (UserManager) getActivity().getSystemService(Context.USER_SERVICE);
+ boolean isSideloadingAllowed =
+ !um.hasUserRestriction(UserManager.DISALLOW_INSTALL_UNKNOWN_SOURCES);
+ // Side loading of apps.
+ if (isSideloadingAllowed) {
+ mToggleAppInstallation.setEnabled(isSideloadingAllowed);
+ } else {
+ if (deviceAdminCategory != null) {
+ deviceAdminCategory.removePreference(mToggleAppInstallation);
+ } else {
+ mToggleAppInstallation.setEnabled(false);
+ }
+ }
+
// Package verification, only visible to primary user and if enabled
mToggleVerifyApps = (CheckBoxPreference) findPreference(KEY_TOGGLE_VERIFY_APPLICATIONS);
if (mIsPrimary && showVerifierSetting()) {
@@ -250,8 +266,6 @@ public class SecuritySettings extends SettingsPreferenceFragment
mToggleVerifyApps.setEnabled(false);
}
} else {
- PreferenceGroup deviceAdminCategory= (PreferenceGroup)
- root.findPreference(KEY_DEVICE_ADMIN_CATEGORY);
if (deviceAdminCategory != null) {
deviceAdminCategory.removePreference(mToggleVerifyApps);
} else {
@@ -268,6 +282,10 @@ public class SecuritySettings extends SettingsPreferenceFragment
}
private void setNonMarketAppsAllowed(boolean enabled) {
+ final UserManager um = (UserManager) getActivity().getSystemService(Context.USER_SERVICE);
+ if (um.hasUserRestriction(UserManager.DISALLOW_INSTALL_UNKNOWN_SOURCES)) {
+ return;
+ }
// Change the system setting
Settings.Global.putInt(getContentResolver(), Settings.Global.INSTALL_NON_MARKET_APPS,
enabled ? 1 : 0);
@@ -303,6 +321,7 @@ public class SecuritySettings extends SettingsPreferenceFragment
.show();
}
+ @Override
public void onClick(DialogInterface dialog, int which) {
if (dialog == mWarnInstallApps && which == DialogInterface.BUTTON_POSITIVE) {
setNonMarketAppsAllowed(true);
@@ -505,6 +524,7 @@ public class SecuritySettings extends SettingsPreferenceFragment
createPreferenceHierarchy();
}
+ @Override
public boolean onPreferenceChange(Preference preference, Object value) {
if (preference == mLockAfter) {
int timeout = Integer.parseInt((String) value);
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index be8e1cc..64a7d7f 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -178,6 +178,7 @@ public class Settings extends PreferenceActivity
if (mParentHeader != null) {
setParentTitle(mParentHeader.title, null, new OnClickListener() {
+ @Override
public void onClick(View v) {
switchToParent(mParentHeader.fragment);
}
@@ -405,7 +406,6 @@ public class Settings extends PreferenceActivity
@Override
public void onBuildHeaders(List<Header> headers) {
loadHeadersFromResource(R.xml.settings_headers, headers);
-
updateHeaderList(headers);
}
@@ -414,6 +414,8 @@ public class Settings extends PreferenceActivity
DevelopmentSettings.PREF_SHOW,
android.os.Build.TYPE.equals("eng"));
int i = 0;
+
+ final UserManager um = (UserManager) getSystemService(Context.USER_SERVICE);
mHeaderIndexMap.clear();
while (i < target.size()) {
Header header = target.get(i);
@@ -464,6 +466,10 @@ public class Settings extends PreferenceActivity
}
}
}
+ } else if (id == R.id.account_add) {
+ if (um.hasUserRestriction(UserManager.DISALLOW_MODIFY_ACCOUNTS)) {
+ target.remove(i);
+ }
}
if (i < target.size() && target.get(i) == header
@@ -778,6 +784,7 @@ public class Settings extends PreferenceActivity
return true;
}
+ @Override
public boolean shouldUpRecreateTask(Intent targetIntent) {
return super.shouldUpRecreateTask(new Intent(this, Settings.class));
}
diff --git a/src/com/android/settings/accounts/AccountSyncSettings.java b/src/com/android/settings/accounts/AccountSyncSettings.java
index c346017..64c4d4a 100644
--- a/src/com/android/settings/accounts/AccountSyncSettings.java
+++ b/src/com/android/settings/accounts/AccountSyncSettings.java
@@ -28,17 +28,16 @@ import android.app.Dialog;
import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
-import android.content.Intent;
import android.content.SyncAdapterType;
import android.content.SyncInfo;
import android.content.SyncStatusInfo;
import android.content.pm.ProviderInfo;
import android.net.ConnectivityManager;
import android.os.Bundle;
+import android.os.UserManager;
import android.preference.Preference;
import android.preference.PreferenceScreen;
import android.text.TextUtils;
-import android.text.format.DateFormat;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -93,10 +92,12 @@ public class AccountSyncSettings extends AccountPreferenceBase {
.setNegativeButton(android.R.string.cancel, null)
.setPositiveButton(R.string.remove_account_label,
new DialogInterface.OnClickListener() {
+ @Override
public void onClick(DialogInterface dialog, int which) {
AccountManager.get(AccountSyncSettings.this.getActivity())
.removeAccount(mAccount,
new AccountManagerCallback<Boolean>() {
+ @Override
public void run(AccountManagerFuture<Boolean> future) {
// If already out of this screen, don't proceed.
if (!AccountSyncSettings.this.isResumed()) {
@@ -233,12 +234,15 @@ public class AccountSyncSettings extends AccountPreferenceBase {
MenuItem syncCancel = menu.add(0, MENU_SYNC_CANCEL_ID, 0,
getString(R.string.sync_menu_sync_cancel))
.setIcon(com.android.internal.R.drawable.ic_menu_close_clear_cancel);
- MenuItem removeAccount = menu.add(0, MENU_REMOVE_ACCOUNT_ID, 0,
- getString(R.string.remove_account_label))
- .setIcon(R.drawable.ic_menu_delete_holo_dark);
- removeAccount.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER |
- MenuItem.SHOW_AS_ACTION_WITH_TEXT);
+ final UserManager um = (UserManager) getSystemService(Context.USER_SERVICE);
+ if (!um.hasUserRestriction(UserManager.DISALLOW_MODIFY_ACCOUNTS)) {
+ MenuItem removeAccount = menu.add(0, MENU_REMOVE_ACCOUNT_ID, 0,
+ getString(R.string.remove_account_label))
+ .setIcon(R.drawable.ic_menu_delete_holo_dark);
+ removeAccount.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER |
+ MenuItem.SHOW_AS_ACTION_WITH_TEXT);
+ }
syncNow.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER |
MenuItem.SHOW_AS_ACTION_WITH_TEXT);
syncCancel.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER |
diff --git a/src/com/android/settings/accounts/AddAccountSettings.java b/src/com/android/settings/accounts/AddAccountSettings.java
index 6f7e29a..f1b7752 100644
--- a/src/com/android/settings/accounts/AddAccountSettings.java
+++ b/src/com/android/settings/accounts/AddAccountSettings.java
@@ -23,8 +23,10 @@ import android.accounts.AuthenticatorException;
import android.accounts.OperationCanceledException;
import android.app.Activity;
import android.app.PendingIntent;
+import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
+import android.os.UserManager;
import android.util.Log;
import com.android.settings.Utils;
@@ -71,7 +73,8 @@ public class AddAccountSettings extends Activity {
private PendingIntent mPendingIntent;
- private AccountManagerCallback<Bundle> mCallback = new AccountManagerCallback<Bundle>() {
+ private final AccountManagerCallback<Bundle> mCallback = new AccountManagerCallback<Bundle>() {
+ @Override
public void run(AccountManagerFuture<Bundle> future) {
boolean done = true;
try {
@@ -120,8 +123,10 @@ public class AddAccountSettings extends Activity {
if (Log.isLoggable(TAG, Log.VERBOSE)) Log.v(TAG, "restored");
}
- if (mAddAccountCalled) {
+ final UserManager um = (UserManager) getSystemService(Context.USER_SERVICE);
+ if (mAddAccountCalled || um.hasUserRestriction(UserManager.DISALLOW_MODIFY_ACCOUNTS)) {
// We already called add account - maybe the callback was lost.
+ // Or we aren't allowed to add an account.
finish();
return;
}
@@ -162,6 +167,7 @@ public class AddAccountSettings extends Activity {
}
}
+ @Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putBoolean(KEY_ADD_CALLED, mAddAccountCalled);
diff --git a/src/com/android/settings/widget/SettingsAppWidgetProvider.java b/src/com/android/settings/widget/SettingsAppWidgetProvider.java
index ac9df9f..5d581d8 100644
--- a/src/com/android/settings/widget/SettingsAppWidgetProvider.java
+++ b/src/com/android/settings/widget/SettingsAppWidgetProvider.java
@@ -541,7 +541,7 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
protected Boolean doInBackground(Void... args) {
final UserManager um =
(UserManager) context.getSystemService(Context.USER_SERVICE);
- if (um.isLocationSharingToggleAllowed()) {
+ if (!um.hasUserRestriction(UserManager.DISALLOW_SHARE_LOCATION)) {
Settings.Secure.setLocationProviderEnabled(
resolver,
LocationManager.GPS_PROVIDER,