Part3 - Don't add padlock if the restriction is not set by admin.
Bug: 26687435 Change-Id: Ibfea6d7d5bd32e7a05dcc2cc32b121c9e50b6a34
This commit is contained in:
@@ -55,6 +55,7 @@
|
|||||||
android:key="network_reset"
|
android:key="network_reset"
|
||||||
android:title="@string/reset_network_title"
|
android:title="@string/reset_network_title"
|
||||||
settings:keywords="@string/keywords_network_reset"
|
settings:keywords="@string/keywords_network_reset"
|
||||||
|
settings:userRestriction="no_network_reset"
|
||||||
settings:useAdminDisabledSummary="true"
|
settings:useAdminDisabledSummary="true"
|
||||||
android:fragment="com.android.settings.ResetNetwork" />
|
android:fragment="com.android.settings.ResetNetwork" />
|
||||||
|
|
||||||
|
@@ -23,6 +23,7 @@
|
|||||||
<com.android.settingslib.RestrictedPreference
|
<com.android.settingslib.RestrictedPreference
|
||||||
android:key="remove_user"
|
android:key="remove_user"
|
||||||
android:title="@string/user_remove_user"
|
android:title="@string/user_remove_user"
|
||||||
|
settings:userRestriction="no_remove_user"
|
||||||
settings:useAdminDisabledSummary="true" />
|
settings:useAdminDisabledSummary="true" />
|
||||||
|
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
||||||
|
@@ -81,7 +81,9 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In
|
|||||||
private UserManager mUm;
|
private UserManager mUm;
|
||||||
|
|
||||||
private EnforcedAdmin mFunDisallowedAdmin;
|
private EnforcedAdmin mFunDisallowedAdmin;
|
||||||
|
private boolean mFunDisallowedBySystem;
|
||||||
private EnforcedAdmin mDebuggingFeaturesDisallowedAdmin;
|
private EnforcedAdmin mDebuggingFeaturesDisallowedAdmin;
|
||||||
|
private boolean mDebuggingFeaturesDisallowedBySystem;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected int getMetricsCategory() {
|
protected int getMetricsCategory() {
|
||||||
@@ -192,8 +194,12 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In
|
|||||||
mDevHitToast = null;
|
mDevHitToast = null;
|
||||||
mFunDisallowedAdmin = RestrictedLockUtils.checkIfRestrictionEnforced(
|
mFunDisallowedAdmin = RestrictedLockUtils.checkIfRestrictionEnforced(
|
||||||
getActivity(), UserManager.DISALLOW_FUN, UserHandle.myUserId());
|
getActivity(), UserManager.DISALLOW_FUN, UserHandle.myUserId());
|
||||||
|
mFunDisallowedBySystem = RestrictedLockUtils.hasBaseUserRestriction(
|
||||||
|
getActivity(), UserManager.DISALLOW_FUN, UserHandle.myUserId());
|
||||||
mDebuggingFeaturesDisallowedAdmin = RestrictedLockUtils.checkIfRestrictionEnforced(
|
mDebuggingFeaturesDisallowedAdmin = RestrictedLockUtils.checkIfRestrictionEnforced(
|
||||||
getActivity(), UserManager.DISALLOW_DEBUGGING_FEATURES, UserHandle.myUserId());
|
getActivity(), UserManager.DISALLOW_DEBUGGING_FEATURES, UserHandle.myUserId());
|
||||||
|
mDebuggingFeaturesDisallowedBySystem = RestrictedLockUtils.hasBaseUserRestriction(
|
||||||
|
getActivity(), UserManager.DISALLOW_DEBUGGING_FEATURES, UserHandle.myUserId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -202,9 +208,11 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In
|
|||||||
System.arraycopy(mHits, 1, mHits, 0, mHits.length-1);
|
System.arraycopy(mHits, 1, mHits, 0, mHits.length-1);
|
||||||
mHits[mHits.length-1] = SystemClock.uptimeMillis();
|
mHits[mHits.length-1] = SystemClock.uptimeMillis();
|
||||||
if (mHits[0] >= (SystemClock.uptimeMillis()-500)) {
|
if (mHits[0] >= (SystemClock.uptimeMillis()-500)) {
|
||||||
if (mFunDisallowedAdmin != null) {
|
if (mUm.hasUserRestriction(UserManager.DISALLOW_FUN)) {
|
||||||
|
if (mFunDisallowedAdmin != null && !mFunDisallowedBySystem) {
|
||||||
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getActivity(),
|
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getActivity(),
|
||||||
mFunDisallowedAdmin);
|
mFunDisallowedAdmin);
|
||||||
|
}
|
||||||
Log.d(LOG_TAG, "Sorry, no fun for you!");
|
Log.d(LOG_TAG, "Sorry, no fun for you!");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -228,9 +236,12 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mDebuggingFeaturesDisallowedAdmin != null) {
|
if (mUm.hasUserRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES)) {
|
||||||
|
if (mDebuggingFeaturesDisallowedAdmin != null &&
|
||||||
|
!mDebuggingFeaturesDisallowedBySystem) {
|
||||||
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getActivity(),
|
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getActivity(),
|
||||||
mDebuggingFeaturesDisallowedAdmin);
|
mDebuggingFeaturesDisallowedAdmin);
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -38,6 +38,7 @@ import com.android.internal.logging.MetricsProto.MetricsEvent;
|
|||||||
import com.android.settings.dashboard.SummaryLoader;
|
import com.android.settings.dashboard.SummaryLoader;
|
||||||
import com.android.settings.search.BaseSearchIndexProvider;
|
import com.android.settings.search.BaseSearchIndexProvider;
|
||||||
import com.android.settings.search.Indexable;
|
import com.android.settings.search.Indexable;
|
||||||
|
import com.android.settingslib.RestrictedLockUtils;
|
||||||
import com.android.settingslib.RestrictedPreference;
|
import com.android.settingslib.RestrictedPreference;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -186,12 +187,6 @@ public class PrivacySettings extends SettingsPreferenceFragment implements Index
|
|||||||
// Hide the item if data management intent is not supported by transport.
|
// Hide the item if data management intent is not supported by transport.
|
||||||
getPreferenceScreen().removePreference(mManageData);
|
getPreferenceScreen().removePreference(mManageData);
|
||||||
}
|
}
|
||||||
|
|
||||||
RestrictedPreference networkResetPref = (RestrictedPreference) findPreference(
|
|
||||||
NETWORK_RESET);
|
|
||||||
if (networkResetPref != null) {
|
|
||||||
networkResetPref.checkRestrictionAndSetDisabled(UserManager.DISALLOW_NETWORK_RESET);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setConfigureSummary(String summary) {
|
private void setConfigureSummary(String summary) {
|
||||||
@@ -315,5 +310,13 @@ public class PrivacySettings extends SettingsPreferenceFragment implements Index
|
|||||||
nonVisibleKeys.add(AUTO_RESTORE);
|
nonVisibleKeys.add(AUTO_RESTORE);
|
||||||
nonVisibleKeys.add(CONFIGURE_ACCOUNT);
|
nonVisibleKeys.add(CONFIGURE_ACCOUNT);
|
||||||
}
|
}
|
||||||
|
if (RestrictedLockUtils.hasBaseUserRestriction(context,
|
||||||
|
UserManager.DISALLOW_FACTORY_RESET, UserHandle.myUserId())) {
|
||||||
|
nonVisibleKeys.add(FACTORY_RESET);
|
||||||
|
}
|
||||||
|
if (RestrictedLockUtils.hasBaseUserRestriction(context,
|
||||||
|
UserManager.DISALLOW_NETWORK_RESET, UserHandle.myUserId())) {
|
||||||
|
nonVisibleKeys.add(NETWORK_RESET);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -251,7 +251,7 @@ public abstract class RestrictedSettingsFragment extends SettingsPreferenceFragm
|
|||||||
@Override
|
@Override
|
||||||
protected void onDataSetChanged() {
|
protected void onDataSetChanged() {
|
||||||
highlightPreferenceIfNeeded();
|
highlightPreferenceIfNeeded();
|
||||||
if (mAdminSupportDetails != null && isUiRestricted()) {
|
if (mAdminSupportDetails != null && isUiRestrictedByOnlyAdmin()) {
|
||||||
updateAdminSupportDetailsView();
|
updateAdminSupportDetailsView();
|
||||||
setEmptyView(mAdminSupportDetails);
|
setEmptyView(mAdminSupportDetails);
|
||||||
} else if (mEmptyTextView != null) {
|
} else if (mEmptyTextView != null) {
|
||||||
@@ -266,4 +266,9 @@ public abstract class RestrictedSettingsFragment extends SettingsPreferenceFragm
|
|||||||
protected boolean isUiRestricted() {
|
protected boolean isUiRestricted() {
|
||||||
return isRestrictedAndNotProviderProtected() || !hasChallengeSucceeded();
|
return isRestrictedAndNotProviderProtected() || !hasChallengeSucceeded();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected boolean isUiRestrictedByOnlyAdmin() {
|
||||||
|
return isUiRestricted() && !mUserManager.hasBaseUserRestriction(mRestrictionKey,
|
||||||
|
UserHandle.of(UserHandle.myUserId()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -276,19 +276,30 @@ public class SecuritySettings extends SettingsPreferenceFragment
|
|||||||
final UserManager um = (UserManager) getActivity().getSystemService(Context.USER_SERVICE);
|
final UserManager um = (UserManager) getActivity().getSystemService(Context.USER_SERVICE);
|
||||||
mKeyStore = KeyStore.getInstance(); // needs to be initialized for onResume()
|
mKeyStore = KeyStore.getInstance(); // needs to be initialized for onResume()
|
||||||
|
|
||||||
|
if (!RestrictedLockUtils.hasBaseUserRestriction(getActivity(),
|
||||||
|
UserManager.DISALLOW_CONFIG_CREDENTIALS, MY_USER_ID)) {
|
||||||
RestrictedPreference credentialStorageType = (RestrictedPreference) root.findPreference(
|
RestrictedPreference credentialStorageType = (RestrictedPreference) root.findPreference(
|
||||||
KEY_CREDENTIAL_STORAGE_TYPE);
|
KEY_CREDENTIAL_STORAGE_TYPE);
|
||||||
credentialStorageType.checkRestrictionAndSetDisabled(
|
credentialStorageType.checkRestrictionAndSetDisabled(
|
||||||
UserManager.DISALLOW_CONFIG_CREDENTIALS);
|
UserManager.DISALLOW_CONFIG_CREDENTIALS);
|
||||||
RestrictedPreference installCredentials = (RestrictedPreference) root.findPreference(
|
RestrictedPreference installCredentials = (RestrictedPreference) root.findPreference(
|
||||||
KEY_CREDENTIALS_INSTALL);
|
KEY_CREDENTIALS_INSTALL);
|
||||||
installCredentials.checkRestrictionAndSetDisabled(UserManager.DISALLOW_CONFIG_CREDENTIALS);
|
installCredentials.checkRestrictionAndSetDisabled(
|
||||||
mResetCredentials.checkRestrictionAndSetDisabled(UserManager.DISALLOW_CONFIG_CREDENTIALS);
|
UserManager.DISALLOW_CONFIG_CREDENTIALS);
|
||||||
|
mResetCredentials.checkRestrictionAndSetDisabled(
|
||||||
|
UserManager.DISALLOW_CONFIG_CREDENTIALS);
|
||||||
|
|
||||||
final int storageSummaryRes =
|
final int storageSummaryRes =
|
||||||
mKeyStore.isHardwareBacked() ? R.string.credential_storage_type_hardware
|
mKeyStore.isHardwareBacked() ? R.string.credential_storage_type_hardware
|
||||||
: R.string.credential_storage_type_software;
|
: R.string.credential_storage_type_software;
|
||||||
credentialStorageType.setSummary(storageSummaryRes);
|
credentialStorageType.setSummary(storageSummaryRes);
|
||||||
|
} else {
|
||||||
|
PreferenceGroup credentialsManager = (PreferenceGroup)
|
||||||
|
root.findPreference(KEY_CREDENTIALS_MANAGER);
|
||||||
|
credentialsManager.removePreference(root.findPreference(KEY_RESET_CREDENTIALS));
|
||||||
|
credentialsManager.removePreference(root.findPreference(KEY_CREDENTIALS_INSTALL));
|
||||||
|
credentialsManager.removePreference(root.findPreference(KEY_CREDENTIAL_STORAGE_TYPE));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Application install
|
// Application install
|
||||||
@@ -300,6 +311,12 @@ public class SecuritySettings extends SettingsPreferenceFragment
|
|||||||
// Side loading of apps.
|
// Side loading of apps.
|
||||||
// Disable for restricted profiles. For others, check if policy disallows it.
|
// Disable for restricted profiles. For others, check if policy disallows it.
|
||||||
mToggleAppInstallation.setEnabled(!um.getUserInfo(MY_USER_ID).isRestricted());
|
mToggleAppInstallation.setEnabled(!um.getUserInfo(MY_USER_ID).isRestricted());
|
||||||
|
if (RestrictedLockUtils.hasBaseUserRestriction(getActivity(),
|
||||||
|
UserManager.DISALLOW_INSTALL_UNKNOWN_SOURCES, MY_USER_ID)
|
||||||
|
|| RestrictedLockUtils.hasBaseUserRestriction(getActivity(),
|
||||||
|
UserManager.DISALLOW_INSTALL_APPS, MY_USER_ID)) {
|
||||||
|
mToggleAppInstallation.setEnabled(false);
|
||||||
|
}
|
||||||
if (mToggleAppInstallation.isEnabled()) {
|
if (mToggleAppInstallation.isEnabled()) {
|
||||||
mToggleAppInstallation.checkRestrictionAndSetDisabled(
|
mToggleAppInstallation.checkRestrictionAndSetDisabled(
|
||||||
UserManager.DISALLOW_INSTALL_UNKNOWN_SOURCES);
|
UserManager.DISALLOW_INSTALL_UNKNOWN_SOURCES);
|
||||||
|
@@ -34,6 +34,7 @@ import android.nfc.NfcAdapter;
|
|||||||
import android.nfc.NfcManager;
|
import android.nfc.NfcManager;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.SystemProperties;
|
import android.os.SystemProperties;
|
||||||
|
import android.os.UserHandle;
|
||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
import android.provider.SearchIndexableResource;
|
import android.provider.SearchIndexableResource;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
@@ -242,7 +243,8 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde
|
|||||||
//enable/disable wimax depending on the value in config.xml
|
//enable/disable wimax depending on the value in config.xml
|
||||||
final boolean isWimaxEnabled = isAdmin && this.getResources().getBoolean(
|
final boolean isWimaxEnabled = isAdmin && this.getResources().getBoolean(
|
||||||
com.android.internal.R.bool.config_wimaxEnabled);
|
com.android.internal.R.bool.config_wimaxEnabled);
|
||||||
if (!isWimaxEnabled) {
|
if (!isWimaxEnabled || RestrictedLockUtils.hasBaseUserRestriction(activity,
|
||||||
|
UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS, UserHandle.myUserId())) {
|
||||||
PreferenceScreen root = getPreferenceScreen();
|
PreferenceScreen root = getPreferenceScreen();
|
||||||
Preference ps = findPreference(KEY_WIMAX_SETTINGS);
|
Preference ps = findPreference(KEY_WIMAX_SETTINGS);
|
||||||
if (ps != null) root.removePreference(ps);
|
if (ps != null) root.removePreference(ps);
|
||||||
@@ -260,7 +262,8 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde
|
|||||||
}
|
}
|
||||||
// Disable VPN.
|
// Disable VPN.
|
||||||
// TODO: http://b/23693383
|
// TODO: http://b/23693383
|
||||||
if (!isAdmin) {
|
if (!isAdmin || RestrictedLockUtils.hasBaseUserRestriction(activity,
|
||||||
|
UserManager.DISALLOW_CONFIG_VPN, UserHandle.myUserId())) {
|
||||||
removePreference(KEY_VPN_SETTINGS);
|
removePreference(KEY_VPN_SETTINGS);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -285,7 +288,9 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde
|
|||||||
|
|
||||||
// Remove Mobile Network Settings and Manage Mobile Plan for secondary users,
|
// Remove Mobile Network Settings and Manage Mobile Plan for secondary users,
|
||||||
// if it's a wifi-only device.
|
// if it's a wifi-only device.
|
||||||
if (!isAdmin || Utils.isWifiOnly(getActivity())) {
|
if (!isAdmin || Utils.isWifiOnly(getActivity()) ||
|
||||||
|
RestrictedLockUtils.hasBaseUserRestriction(activity,
|
||||||
|
UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS, UserHandle.myUserId())) {
|
||||||
removePreference(KEY_MOBILE_NETWORK_SETTINGS);
|
removePreference(KEY_MOBILE_NETWORK_SETTINGS);
|
||||||
removePreference(KEY_MANAGE_MOBILE_PLAN);
|
removePreference(KEY_MANAGE_MOBILE_PLAN);
|
||||||
}
|
}
|
||||||
@@ -317,9 +322,11 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde
|
|||||||
final ConnectivityManager cm =
|
final ConnectivityManager cm =
|
||||||
(ConnectivityManager) activity.getSystemService(Context.CONNECTIVITY_SERVICE);
|
(ConnectivityManager) activity.getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||||
|
|
||||||
final boolean adminDisallowedTetherConfig = mUm.hasUserRestriction(
|
final boolean adminDisallowedTetherConfig = RestrictedLockUtils.checkIfRestrictionEnforced(
|
||||||
UserManager.DISALLOW_CONFIG_TETHERING);
|
activity, UserManager.DISALLOW_CONFIG_TETHERING, UserHandle.myUserId()) != null;
|
||||||
if (!cm.isTetheringSupported() && !adminDisallowedTetherConfig) {
|
if ((!cm.isTetheringSupported() && !adminDisallowedTetherConfig) ||
|
||||||
|
RestrictedLockUtils.hasBaseUserRestriction(activity,
|
||||||
|
UserManager.DISALLOW_CONFIG_TETHERING, UserHandle.myUserId())) {
|
||||||
getPreferenceScreen().removePreference(findPreference(KEY_TETHER_SETTINGS));
|
getPreferenceScreen().removePreference(findPreference(KEY_TETHER_SETTINGS));
|
||||||
} else if (!adminDisallowedTetherConfig) {
|
} else if (!adminDisallowedTetherConfig) {
|
||||||
Preference p = findPreference(KEY_TETHER_SETTINGS);
|
Preference p = findPreference(KEY_TETHER_SETTINGS);
|
||||||
|
@@ -62,6 +62,7 @@ import com.android.settings.search.Index;
|
|||||||
import com.android.settings.search.Indexable;
|
import com.android.settings.search.Indexable;
|
||||||
import com.android.settings.search.SearchIndexableRaw;
|
import com.android.settings.search.SearchIndexableRaw;
|
||||||
import com.android.settings.users.UserDialogs;
|
import com.android.settings.users.UserDialogs;
|
||||||
|
import com.android.settingslib.RestrictedLockUtils;
|
||||||
import com.android.settingslib.accounts.AuthenticatorHelper;
|
import com.android.settingslib.accounts.AuthenticatorHelper;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -325,10 +326,13 @@ public class AccountSettings extends SettingsPreferenceFragment
|
|||||||
if (userInfo.isEnabled()) {
|
if (userInfo.isEnabled()) {
|
||||||
profileData.authenticatorHelper = new AuthenticatorHelper(context,
|
profileData.authenticatorHelper = new AuthenticatorHelper(context,
|
||||||
userInfo.getUserHandle(), this);
|
userInfo.getUserHandle(), this);
|
||||||
|
if (!RestrictedLockUtils.hasBaseUserRestriction(context,
|
||||||
|
UserManager.DISALLOW_MODIFY_ACCOUNTS, userInfo.id)) {
|
||||||
profileData.addAccountPreference = newAddAccountPreference(context);
|
profileData.addAccountPreference = newAddAccountPreference(context);
|
||||||
profileData.addAccountPreference.checkRestrictionAndSetDisabled(
|
profileData.addAccountPreference.checkRestrictionAndSetDisabled(
|
||||||
DISALLOW_MODIFY_ACCOUNTS, userInfo.id);
|
DISALLOW_MODIFY_ACCOUNTS, userInfo.id);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
mProfiles.put(userInfo.id, profileData);
|
mProfiles.put(userInfo.id, profileData);
|
||||||
Index.getInstance(getActivity()).updateFromClassNameResource(
|
Index.getInstance(getActivity()).updateFromClassNameResource(
|
||||||
AccountSettings.class.getName(), true, true);
|
AccountSettings.class.getName(), true, true);
|
||||||
@@ -715,13 +719,16 @@ public class AccountSettings extends SettingsPreferenceFragment
|
|||||||
for (int i = 0; i < profilesCount; i++) {
|
for (int i = 0; i < profilesCount; i++) {
|
||||||
UserInfo userInfo = profiles.get(i);
|
UserInfo userInfo = profiles.get(i);
|
||||||
if (userInfo.isEnabled()) {
|
if (userInfo.isEnabled()) {
|
||||||
|
if (!RestrictedLockUtils.hasBaseUserRestriction(context,
|
||||||
|
DISALLOW_MODIFY_ACCOUNTS, userInfo.id)) {
|
||||||
SearchIndexableRaw data = new SearchIndexableRaw(context);
|
SearchIndexableRaw data = new SearchIndexableRaw(context);
|
||||||
data = new SearchIndexableRaw(context);
|
data = new SearchIndexableRaw(context);
|
||||||
data.title = res.getString(R.string.add_account_label);
|
data.title = res.getString(R.string.add_account_label);
|
||||||
data.screenTitle = screenTitle;
|
data.screenTitle = screenTitle;
|
||||||
result.add(data);
|
result.add(data);
|
||||||
|
}
|
||||||
if (userInfo.isManagedProfile()) {
|
if (userInfo.isManagedProfile()) {
|
||||||
data = new SearchIndexableRaw(context);
|
SearchIndexableRaw data = new SearchIndexableRaw(context);
|
||||||
data = new SearchIndexableRaw(context);
|
data = new SearchIndexableRaw(context);
|
||||||
data.title = res.getString(R.string.remove_managed_profile_label);
|
data.title = res.getString(R.string.remove_managed_profile_label);
|
||||||
data.screenTitle = screenTitle;
|
data.screenTitle = screenTitle;
|
||||||
|
@@ -262,6 +262,8 @@ public class AccountSyncSettings extends AccountPreferenceBase {
|
|||||||
MenuItem syncCancel = menu.add(0, MENU_SYNC_CANCEL_ID, 0,
|
MenuItem syncCancel = menu.add(0, MENU_SYNC_CANCEL_ID, 0,
|
||||||
getString(R.string.sync_menu_sync_cancel))
|
getString(R.string.sync_menu_sync_cancel))
|
||||||
.setIcon(com.android.internal.R.drawable.ic_menu_close_clear_cancel);
|
.setIcon(com.android.internal.R.drawable.ic_menu_close_clear_cancel);
|
||||||
|
if (!RestrictedLockUtils.hasBaseUserRestriction(getPrefContext(),
|
||||||
|
UserManager.DISALLOW_MODIFY_ACCOUNTS, mUserHandle.getIdentifier())) {
|
||||||
MenuItem removeAccount = menu.add(0, MENU_REMOVE_ACCOUNT_ID, 0,
|
MenuItem removeAccount = menu.add(0, MENU_REMOVE_ACCOUNT_ID, 0,
|
||||||
getString(R.string.remove_account_label))
|
getString(R.string.remove_account_label))
|
||||||
.setIcon(R.drawable.ic_menu_delete);
|
.setIcon(R.drawable.ic_menu_delete);
|
||||||
@@ -276,6 +278,7 @@ public class AccountSyncSettings extends AccountPreferenceBase {
|
|||||||
}
|
}
|
||||||
RestrictedLockUtils.setMenuItemAsDisabledByAdmin(getPrefContext(),
|
RestrictedLockUtils.setMenuItemAsDisabledByAdmin(getPrefContext(),
|
||||||
removeAccount, admin);
|
removeAccount, admin);
|
||||||
|
}
|
||||||
syncNow.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER |
|
syncNow.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER |
|
||||||
MenuItem.SHOW_AS_ACTION_WITH_TEXT);
|
MenuItem.SHOW_AS_ACTION_WITH_TEXT);
|
||||||
syncCancel.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER |
|
syncCancel.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER |
|
||||||
|
@@ -56,6 +56,7 @@ public abstract class AppInfoBase extends SettingsPreferenceFragment
|
|||||||
protected static final boolean localLOGV = false;
|
protected static final boolean localLOGV = false;
|
||||||
|
|
||||||
protected EnforcedAdmin mAppsControlDisallowedAdmin;
|
protected EnforcedAdmin mAppsControlDisallowedAdmin;
|
||||||
|
protected boolean mAppsControlDisallowedBySystem;
|
||||||
|
|
||||||
protected ApplicationsState mState;
|
protected ApplicationsState mState;
|
||||||
protected ApplicationsState.Session mSession;
|
protected ApplicationsState.Session mSession;
|
||||||
@@ -97,6 +98,8 @@ public abstract class AppInfoBase extends SettingsPreferenceFragment
|
|||||||
mSession.resume();
|
mSession.resume();
|
||||||
mAppsControlDisallowedAdmin = RestrictedLockUtils.checkIfRestrictionEnforced(getActivity(),
|
mAppsControlDisallowedAdmin = RestrictedLockUtils.checkIfRestrictionEnforced(getActivity(),
|
||||||
UserManager.DISALLOW_APPS_CONTROL, mUserId);
|
UserManager.DISALLOW_APPS_CONTROL, mUserId);
|
||||||
|
mAppsControlDisallowedBySystem = RestrictedLockUtils.hasBaseUserRestriction(getActivity(),
|
||||||
|
UserManager.DISALLOW_APPS_CONTROL, mUserId);
|
||||||
|
|
||||||
if (!refreshUi()) {
|
if (!refreshUi()) {
|
||||||
setIntentAndFinish(true, true);
|
setIntentAndFinish(true, true);
|
||||||
|
@@ -194,7 +194,7 @@ public class AppStorageSettings extends AppInfoWithHeader
|
|||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
if (v == mClearCacheButton) {
|
if (v == mClearCacheButton) {
|
||||||
if (mAppsControlDisallowedAdmin != null) {
|
if (mAppsControlDisallowedAdmin != null && !mAppsControlDisallowedBySystem) {
|
||||||
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(
|
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(
|
||||||
getActivity(), mAppsControlDisallowedAdmin);
|
getActivity(), mAppsControlDisallowedAdmin);
|
||||||
return;
|
return;
|
||||||
@@ -203,7 +203,7 @@ public class AppStorageSettings extends AppInfoWithHeader
|
|||||||
}
|
}
|
||||||
mPm.deleteApplicationCacheFiles(mPackageName, mClearCacheObserver);
|
mPm.deleteApplicationCacheFiles(mPackageName, mClearCacheObserver);
|
||||||
} else if (v == mClearDataButton) {
|
} else if (v == mClearDataButton) {
|
||||||
if (mAppsControlDisallowedAdmin != null) {
|
if (mAppsControlDisallowedAdmin != null && !mAppsControlDisallowedBySystem) {
|
||||||
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(
|
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(
|
||||||
getActivity(), mAppsControlDisallowedAdmin);
|
getActivity(), mAppsControlDisallowedAdmin);
|
||||||
} else if (mAppEntry.info.manageSpaceActivityName != null) {
|
} else if (mAppEntry.info.manageSpaceActivityName != null) {
|
||||||
@@ -219,7 +219,7 @@ public class AppStorageSettings extends AppInfoWithHeader
|
|||||||
} else if (v == mChangeStorageButton && mDialogBuilder != null && !isMoveInProgress()) {
|
} else if (v == mChangeStorageButton && mDialogBuilder != null && !isMoveInProgress()) {
|
||||||
mDialogBuilder.show();
|
mDialogBuilder.show();
|
||||||
} else if (v == mClearUriButton) {
|
} else if (v == mClearUriButton) {
|
||||||
if (mAppsControlDisallowedAdmin != null) {
|
if (mAppsControlDisallowedAdmin != null && !mAppsControlDisallowedBySystem) {
|
||||||
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(
|
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(
|
||||||
getActivity(), mAppsControlDisallowedAdmin);
|
getActivity(), mAppsControlDisallowedAdmin);
|
||||||
} else {
|
} else {
|
||||||
@@ -323,6 +323,10 @@ public class AppStorageSettings extends AppInfoWithHeader
|
|||||||
mClearCacheButton.setOnClickListener(this);
|
mClearCacheButton.setOnClickListener(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (mAppsControlDisallowedBySystem) {
|
||||||
|
mClearCacheButton.setEnabled(false);
|
||||||
|
mClearDataButton.setEnabled(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -369,6 +373,10 @@ public class AppStorageSettings extends AppInfoWithHeader
|
|||||||
}
|
}
|
||||||
mClearDataButton.setOnClickListener(this);
|
mClearDataButton.setOnClickListener(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mAppsControlDisallowedBySystem) {
|
||||||
|
mClearDataButton.setEnabled(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initMoveDialog() {
|
private void initMoveDialog() {
|
||||||
@@ -488,6 +496,10 @@ public class AppStorageSettings extends AppInfoWithHeader
|
|||||||
mUri.addPreference(pref);
|
mUri.addPreference(pref);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mAppsControlDisallowedBySystem) {
|
||||||
|
mClearUriButton.setEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
mClearUri.setOrder(order);
|
mClearUri.setOrder(order);
|
||||||
mClearUriButton.setVisibility(View.VISIBLE);
|
mClearUriButton.setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
|
@@ -242,6 +242,10 @@ public class InstalledAppDetails extends AppInfoBase
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mAppsControlDisallowedBySystem) {
|
||||||
|
enabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
mUninstallButton.setEnabled(enabled);
|
mUninstallButton.setEnabled(enabled);
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
// Register listener
|
// Register listener
|
||||||
@@ -405,7 +409,7 @@ public class InstalledAppDetails extends AppInfoBase
|
|||||||
menu.findItem(UNINSTALL_ALL_USERS_MENU).setVisible(showIt);
|
menu.findItem(UNINSTALL_ALL_USERS_MENU).setVisible(showIt);
|
||||||
mUpdatedSysApp = (mAppEntry.info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0;
|
mUpdatedSysApp = (mAppEntry.info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0;
|
||||||
MenuItem uninstallUpdatesItem = menu.findItem(UNINSTALL_UPDATES);
|
MenuItem uninstallUpdatesItem = menu.findItem(UNINSTALL_UPDATES);
|
||||||
uninstallUpdatesItem.setVisible(mUpdatedSysApp);
|
uninstallUpdatesItem.setVisible(mUpdatedSysApp && !mAppsControlDisallowedBySystem);
|
||||||
if (uninstallUpdatesItem.isVisible()) {
|
if (uninstallUpdatesItem.isVisible()) {
|
||||||
RestrictedLockUtils.setMenuItemAsDisabledByAdmin(getActivity(),
|
RestrictedLockUtils.setMenuItemAsDisabledByAdmin(getActivity(),
|
||||||
uninstallUpdatesItem, mAppsControlDisallowedAdmin);
|
uninstallUpdatesItem, mAppsControlDisallowedAdmin);
|
||||||
@@ -660,9 +664,13 @@ public class InstalledAppDetails extends AppInfoBase
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateForceStopButton(boolean enabled) {
|
private void updateForceStopButton(boolean enabled) {
|
||||||
|
if (mAppsControlDisallowedBySystem) {
|
||||||
|
mForceStopButton.setEnabled(false);
|
||||||
|
} else {
|
||||||
mForceStopButton.setEnabled(enabled);
|
mForceStopButton.setEnabled(enabled);
|
||||||
mForceStopButton.setOnClickListener(InstalledAppDetails.this);
|
mForceStopButton.setOnClickListener(InstalledAppDetails.this);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void checkForceStop() {
|
private void checkForceStop() {
|
||||||
if (mDpm.packageHasActiveAdmins(mPackageInfo.packageName)) {
|
if (mDpm.packageHasActiveAdmins(mPackageInfo.packageName)) {
|
||||||
@@ -719,7 +727,9 @@ public class InstalledAppDetails extends AppInfoBase
|
|||||||
if(v == mUninstallButton) {
|
if(v == mUninstallButton) {
|
||||||
EnforcedAdmin admin = RestrictedLockUtils.checkIfUninstallBlocked(getActivity(),
|
EnforcedAdmin admin = RestrictedLockUtils.checkIfUninstallBlocked(getActivity(),
|
||||||
packageName, mUserId);
|
packageName, mUserId);
|
||||||
if (admin != null) {
|
boolean uninstallBlockedBySystem = mAppsControlDisallowedBySystem ||
|
||||||
|
RestrictedLockUtils.hasBaseUserRestriction(getActivity(), packageName, mUserId);
|
||||||
|
if (admin != null && !uninstallBlockedBySystem) {
|
||||||
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getActivity(), admin);
|
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getActivity(), admin);
|
||||||
} else if ((mAppEntry.info.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
|
} else if ((mAppEntry.info.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
|
||||||
if (mAppEntry.info.enabled && !isDisabledUntilUsed()) {
|
if (mAppEntry.info.enabled && !isDisabledUntilUsed()) {
|
||||||
@@ -739,7 +749,7 @@ public class InstalledAppDetails extends AppInfoBase
|
|||||||
uninstallPkg(packageName, false, false);
|
uninstallPkg(packageName, false, false);
|
||||||
}
|
}
|
||||||
} else if (v == mForceStopButton) {
|
} else if (v == mForceStopButton) {
|
||||||
if (mAppsControlDisallowedAdmin != null) {
|
if (mAppsControlDisallowedAdmin != null && !mAppsControlDisallowedBySystem) {
|
||||||
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(
|
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(
|
||||||
getActivity(), mAppsControlDisallowedAdmin);
|
getActivity(), mAppsControlDisallowedAdmin);
|
||||||
} else {
|
} else {
|
||||||
|
@@ -171,6 +171,9 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem
|
|||||||
|
|
||||||
if (isUiRestricted()) {
|
if (isUiRestricted()) {
|
||||||
setDeviceListGroup(getPreferenceScreen());
|
setDeviceListGroup(getPreferenceScreen());
|
||||||
|
if (!isUiRestrictedByOnlyAdmin()) {
|
||||||
|
getEmptyTextView().setText(R.string.bluetooth_empty_list_user_restricted);
|
||||||
|
}
|
||||||
removeAllDevices();
|
removeAllDevices();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -294,6 +297,7 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem
|
|||||||
mDevicePreferenceMap.clear();
|
mDevicePreferenceMap.clear();
|
||||||
|
|
||||||
if (isUiRestricted()) {
|
if (isUiRestricted()) {
|
||||||
|
messageId = R.string.bluetooth_empty_list_user_restricted;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -355,7 +359,7 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem
|
|||||||
case BluetoothAdapter.STATE_OFF:
|
case BluetoothAdapter.STATE_OFF:
|
||||||
setOffMessage();
|
setOffMessage();
|
||||||
if (isUiRestricted()) {
|
if (isUiRestricted()) {
|
||||||
messageId = 0;
|
messageId = R.string.bluetooth_empty_list_user_restricted;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@@ -395,7 +395,10 @@ public class StorageSettings extends SettingsPreferenceFragment implements Index
|
|||||||
EnforcedAdmin admin = RestrictedLockUtils.checkIfRestrictionEnforced(
|
EnforcedAdmin admin = RestrictedLockUtils.checkIfRestrictionEnforced(
|
||||||
getActivity(), UserManager.DISALLOW_MOUNT_PHYSICAL_MEDIA,
|
getActivity(), UserManager.DISALLOW_MOUNT_PHYSICAL_MEDIA,
|
||||||
UserHandle.myUserId());
|
UserHandle.myUserId());
|
||||||
if (admin != null) {
|
boolean hasBaseUserRestriction = RestrictedLockUtils.hasBaseUserRestriction(
|
||||||
|
getActivity(), UserManager.DISALLOW_MOUNT_PHYSICAL_MEDIA,
|
||||||
|
UserHandle.myUserId());
|
||||||
|
if (admin != null && !hasBaseUserRestriction) {
|
||||||
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getActivity(), admin);
|
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getActivity(), admin);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@@ -22,6 +22,7 @@ import android.content.pm.PackageManager;
|
|||||||
import android.hardware.usb.UsbManager;
|
import android.hardware.usb.UsbManager;
|
||||||
import android.hardware.usb.UsbPort;
|
import android.hardware.usb.UsbPort;
|
||||||
import android.hardware.usb.UsbPortStatus;
|
import android.hardware.usb.UsbPortStatus;
|
||||||
|
import android.os.UserHandle;
|
||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
|
|
||||||
public class UsbBackend {
|
public class UsbBackend {
|
||||||
@@ -37,6 +38,7 @@ public class UsbBackend {
|
|||||||
public static final int MODE_DATA_MIDI = 0x03 << 1;
|
public static final int MODE_DATA_MIDI = 0x03 << 1;
|
||||||
|
|
||||||
private final boolean mRestricted;
|
private final boolean mRestricted;
|
||||||
|
private final boolean mRestrictedBySystem;
|
||||||
private final boolean mMidi;
|
private final boolean mMidi;
|
||||||
|
|
||||||
private UserManager mUserManager;
|
private UserManager mUserManager;
|
||||||
@@ -56,6 +58,8 @@ public class UsbBackend {
|
|||||||
mUsbManager = context.getSystemService(UsbManager.class);
|
mUsbManager = context.getSystemService(UsbManager.class);
|
||||||
|
|
||||||
mRestricted = mUserManager.hasUserRestriction(UserManager.DISALLOW_USB_FILE_TRANSFER);
|
mRestricted = mUserManager.hasUserRestriction(UserManager.DISALLOW_USB_FILE_TRANSFER);
|
||||||
|
mRestrictedBySystem = mUserManager.hasBaseUserRestriction(
|
||||||
|
UserManager.DISALLOW_USB_FILE_TRANSFER, UserHandle.of(UserHandle.myUserId()));
|
||||||
mMidi = context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_MIDI);
|
mMidi = context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_MIDI);
|
||||||
|
|
||||||
UsbPort[] ports = mUsbManager.getPorts();
|
UsbPort[] ports = mUsbManager.getPorts();
|
||||||
@@ -134,7 +138,7 @@ public class UsbBackend {
|
|||||||
? UsbPort.POWER_ROLE_SOURCE : UsbPort.POWER_ROLE_SINK;
|
? UsbPort.POWER_ROLE_SOURCE : UsbPort.POWER_ROLE_SINK;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isModeDisallowedByAdmin(int mode) {
|
public boolean isModeDisallowed(int mode) {
|
||||||
if (mRestricted && (mode & MODE_DATA_MASK) != MODE_DATA_NONE
|
if (mRestricted && (mode & MODE_DATA_MASK) != MODE_DATA_NONE
|
||||||
&& (mode & MODE_DATA_MASK) != MODE_DATA_MIDI) {
|
&& (mode & MODE_DATA_MASK) != MODE_DATA_MIDI) {
|
||||||
// No USB data modes are supported.
|
// No USB data modes are supported.
|
||||||
@@ -143,6 +147,15 @@ public class UsbBackend {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isModeDisallowedBySystem(int mode) {
|
||||||
|
if (mRestrictedBySystem && (mode & MODE_DATA_MASK) != MODE_DATA_NONE
|
||||||
|
&& (mode & MODE_DATA_MASK) != MODE_DATA_MIDI) {
|
||||||
|
// No USB data modes are supported.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isModeSupported(int mode) {
|
public boolean isModeSupported(int mode) {
|
||||||
if (!mMidi && (mode & MODE_DATA_MASK) == MODE_DATA_MIDI) {
|
if (!mMidi && (mode & MODE_DATA_MASK) == MODE_DATA_MIDI) {
|
||||||
return false;
|
return false;
|
||||||
|
@@ -106,9 +106,10 @@ public class UsbModeChooserActivity extends Activity {
|
|||||||
mBackend = new UsbBackend(this);
|
mBackend = new UsbBackend(this);
|
||||||
int current = mBackend.getCurrentMode();
|
int current = mBackend.getCurrentMode();
|
||||||
for (int i = 0; i < DEFAULT_MODES.length; i++) {
|
for (int i = 0; i < DEFAULT_MODES.length; i++) {
|
||||||
if (mBackend.isModeSupported(DEFAULT_MODES[i])) {
|
if (mBackend.isModeSupported(DEFAULT_MODES[i])
|
||||||
|
&& !mBackend.isModeDisallowedBySystem(DEFAULT_MODES[i])) {
|
||||||
inflateOption(DEFAULT_MODES[i], current == DEFAULT_MODES[i], container,
|
inflateOption(DEFAULT_MODES[i], current == DEFAULT_MODES[i], container,
|
||||||
mBackend.isModeDisallowedByAdmin(DEFAULT_MODES[i]));
|
mBackend.isModeDisallowed(DEFAULT_MODES[i]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -266,8 +266,8 @@ public class LocationSettings extends LocationSettingsBase
|
|||||||
mManagedProfileSwitch.setOnPreferenceClickListener(null);
|
mManagedProfileSwitch.setOnPreferenceClickListener(null);
|
||||||
final EnforcedAdmin admin = RestrictedLockUtils.checkIfRestrictionEnforced(getActivity(),
|
final EnforcedAdmin admin = RestrictedLockUtils.checkIfRestrictionEnforced(getActivity(),
|
||||||
UserManager.DISALLOW_SHARE_LOCATION, mManagedProfile.getIdentifier());
|
UserManager.DISALLOW_SHARE_LOCATION, mManagedProfile.getIdentifier());
|
||||||
if (mUm.hasUserRestriction(UserManager.DISALLOW_SHARE_LOCATION, mManagedProfile)
|
final boolean isRestrictedByBase = isManagedProfileRestrictedByBase();
|
||||||
&& admin != null) {
|
if (!isRestrictedByBase && admin != null) {
|
||||||
mManagedProfileSwitch.setDisabledByAdmin(admin);
|
mManagedProfileSwitch.setDisabledByAdmin(admin);
|
||||||
mManagedProfileSwitch.setChecked(false);
|
mManagedProfileSwitch.setChecked(false);
|
||||||
} else {
|
} else {
|
||||||
@@ -278,9 +278,8 @@ public class LocationSettings extends LocationSettingsBase
|
|||||||
if (!enabled) {
|
if (!enabled) {
|
||||||
mManagedProfileSwitch.setChecked(false);
|
mManagedProfileSwitch.setChecked(false);
|
||||||
} else {
|
} else {
|
||||||
final boolean isRestricted = isManagedProfileRestrictedByBase();
|
mManagedProfileSwitch.setChecked(!isRestrictedByBase);
|
||||||
mManagedProfileSwitch.setChecked(!isRestricted);
|
summaryResId = (isRestrictedByBase ?
|
||||||
summaryResId = (isRestricted ?
|
|
||||||
R.string.switch_off_text : R.string.switch_on_text);
|
R.string.switch_off_text : R.string.switch_on_text);
|
||||||
mManagedProfileSwitch.setOnPreferenceClickListener(
|
mManagedProfileSwitch.setOnPreferenceClickListener(
|
||||||
mManagedProfileSwitchClickListener);
|
mManagedProfileSwitchClickListener);
|
||||||
@@ -382,9 +381,11 @@ public class LocationSettings extends LocationSettingsBase
|
|||||||
final boolean enabled = (mode != android.provider.Settings.Secure.LOCATION_MODE_OFF);
|
final boolean enabled = (mode != android.provider.Settings.Secure.LOCATION_MODE_OFF);
|
||||||
EnforcedAdmin admin = RestrictedLockUtils.checkIfRestrictionEnforced(getActivity(),
|
EnforcedAdmin admin = RestrictedLockUtils.checkIfRestrictionEnforced(getActivity(),
|
||||||
UserManager.DISALLOW_SHARE_LOCATION, UserHandle.myUserId());
|
UserManager.DISALLOW_SHARE_LOCATION, UserHandle.myUserId());
|
||||||
|
boolean hasBaseUserRestriction = RestrictedLockUtils.hasBaseUserRestriction(getActivity(),
|
||||||
|
UserManager.DISALLOW_SHARE_LOCATION, UserHandle.myUserId());
|
||||||
// Disable the whole switch bar instead of the switch itself. If we disabled the switch
|
// Disable the whole switch bar instead of the switch itself. If we disabled the switch
|
||||||
// only, it would be re-enabled again if the switch bar is not disabled.
|
// only, it would be re-enabled again if the switch bar is not disabled.
|
||||||
if (admin != null) {
|
if (!hasBaseUserRestriction && admin != null) {
|
||||||
mSwitchBar.setDisabledByAdmin(admin);
|
mSwitchBar.setDisabledByAdmin(admin);
|
||||||
} else {
|
} else {
|
||||||
mSwitchBar.setEnabled(!restricted);
|
mSwitchBar.setEnabled(!restricted);
|
||||||
|
@@ -21,12 +21,14 @@ import android.content.Context;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
import android.nfc.NfcAdapter;
|
import android.nfc.NfcAdapter;
|
||||||
|
import android.os.UserHandle;
|
||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
import android.support.v14.preference.SwitchPreference;
|
import android.support.v14.preference.SwitchPreference;
|
||||||
import android.support.v7.preference.Preference;
|
import android.support.v7.preference.Preference;
|
||||||
import android.support.v7.preference.PreferenceScreen;
|
import android.support.v7.preference.PreferenceScreen;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
|
import com.android.settingslib.RestrictedLockUtils;
|
||||||
import com.android.settingslib.RestrictedPreference;
|
import com.android.settingslib.RestrictedPreference;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -40,6 +42,7 @@ public class NfcEnabler implements Preference.OnPreferenceChangeListener {
|
|||||||
private final RestrictedPreference mAndroidBeam;
|
private final RestrictedPreference mAndroidBeam;
|
||||||
private final NfcAdapter mNfcAdapter;
|
private final NfcAdapter mNfcAdapter;
|
||||||
private final IntentFilter mIntentFilter;
|
private final IntentFilter mIntentFilter;
|
||||||
|
private boolean mBeamDisallowedBySystem;
|
||||||
|
|
||||||
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
|
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
|
||||||
@Override
|
@Override
|
||||||
@@ -58,6 +61,8 @@ public class NfcEnabler implements Preference.OnPreferenceChangeListener {
|
|||||||
mSwitch = switchPreference;
|
mSwitch = switchPreference;
|
||||||
mAndroidBeam = androidBeam;
|
mAndroidBeam = androidBeam;
|
||||||
mNfcAdapter = NfcAdapter.getDefaultAdapter(context);
|
mNfcAdapter = NfcAdapter.getDefaultAdapter(context);
|
||||||
|
mBeamDisallowedBySystem = RestrictedLockUtils.hasBaseUserRestriction(context,
|
||||||
|
UserManager.DISALLOW_OUTGOING_BEAM, UserHandle.myUserId());
|
||||||
|
|
||||||
if (mNfcAdapter == null) {
|
if (mNfcAdapter == null) {
|
||||||
// NFC is not supported
|
// NFC is not supported
|
||||||
@@ -66,6 +71,9 @@ public class NfcEnabler implements Preference.OnPreferenceChangeListener {
|
|||||||
mIntentFilter = null;
|
mIntentFilter = null;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (mBeamDisallowedBySystem) {
|
||||||
|
mAndroidBeam.setEnabled(false);
|
||||||
|
}
|
||||||
mIntentFilter = new IntentFilter(NfcAdapter.ACTION_ADAPTER_STATE_CHANGED);
|
mIntentFilter = new IntentFilter(NfcAdapter.ACTION_ADAPTER_STATE_CHANGED);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -112,7 +120,12 @@ public class NfcEnabler implements Preference.OnPreferenceChangeListener {
|
|||||||
case NfcAdapter.STATE_ON:
|
case NfcAdapter.STATE_ON:
|
||||||
mSwitch.setChecked(true);
|
mSwitch.setChecked(true);
|
||||||
mSwitch.setEnabled(true);
|
mSwitch.setEnabled(true);
|
||||||
|
if (mBeamDisallowedBySystem) {
|
||||||
|
mAndroidBeam.setDisabledByAdmin(null);
|
||||||
|
mAndroidBeam.setEnabled(false);
|
||||||
|
} else {
|
||||||
mAndroidBeam.checkRestrictionAndSetDisabled(UserManager.DISALLOW_OUTGOING_BEAM);
|
mAndroidBeam.checkRestrictionAndSetDisabled(UserManager.DISALLOW_OUTGOING_BEAM);
|
||||||
|
}
|
||||||
if (mNfcAdapter.isNdefPushEnabled() && mAndroidBeam.isEnabled()) {
|
if (mNfcAdapter.isNdefPushEnabled() && mAndroidBeam.isEnabled()) {
|
||||||
mAndroidBeam.setSummary(R.string.android_beam_on_summary);
|
mAndroidBeam.setSummary(R.string.android_beam_on_summary);
|
||||||
} else {
|
} else {
|
||||||
|
@@ -69,8 +69,12 @@ abstract public class ZenModeSettingsBase extends RestrictedSettingsFragment {
|
|||||||
maybeRefreshRules(true, true /*fireChanged*/);
|
maybeRefreshRules(true, true /*fireChanged*/);
|
||||||
mSettingsObserver.register();
|
mSettingsObserver.register();
|
||||||
if (isUiRestricted()) {
|
if (isUiRestricted()) {
|
||||||
|
if (isUiRestrictedByOnlyAdmin()) {
|
||||||
getPreferenceScreen().removeAll();
|
getPreferenceScreen().removeAll();
|
||||||
return;
|
return;
|
||||||
|
} else {
|
||||||
|
finish();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -29,7 +29,7 @@ import android.support.v7.preference.Preference;
|
|||||||
import com.android.internal.logging.MetricsProto.MetricsEvent;
|
import com.android.internal.logging.MetricsProto.MetricsEvent;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.SettingsPreferenceFragment;
|
import com.android.settings.SettingsPreferenceFragment;
|
||||||
import com.android.settingslib.RestrictedPreference;
|
import com.android.settingslib.RestrictedLockUtils;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -60,7 +60,7 @@ public class UserDetailsSettings extends SettingsPreferenceFragment
|
|||||||
|
|
||||||
private UserManager mUserManager;
|
private UserManager mUserManager;
|
||||||
private SwitchPreference mPhonePref;
|
private SwitchPreference mPhonePref;
|
||||||
private RestrictedPreference mRemoveUserPref;
|
private Preference mRemoveUserPref;
|
||||||
|
|
||||||
private UserInfo mUserInfo;
|
private UserInfo mUserInfo;
|
||||||
private boolean mGuestUser;
|
private boolean mGuestUser;
|
||||||
@@ -80,7 +80,7 @@ public class UserDetailsSettings extends SettingsPreferenceFragment
|
|||||||
|
|
||||||
addPreferencesFromResource(R.xml.user_details_settings);
|
addPreferencesFromResource(R.xml.user_details_settings);
|
||||||
mPhonePref = (SwitchPreference) findPreference(KEY_ENABLE_TELEPHONY);
|
mPhonePref = (SwitchPreference) findPreference(KEY_ENABLE_TELEPHONY);
|
||||||
mRemoveUserPref = (RestrictedPreference) findPreference(KEY_REMOVE_USER);
|
mRemoveUserPref = findPreference(KEY_REMOVE_USER);
|
||||||
|
|
||||||
mGuestUser = getArguments().getBoolean(EXTRA_USER_GUEST, false);
|
mGuestUser = getArguments().getBoolean(EXTRA_USER_GUEST, false);
|
||||||
|
|
||||||
@@ -103,13 +103,11 @@ public class UserDetailsSettings extends SettingsPreferenceFragment
|
|||||||
mPhonePref.setChecked(
|
mPhonePref.setChecked(
|
||||||
!mDefaultGuestRestrictions.getBoolean(UserManager.DISALLOW_OUTGOING_CALLS));
|
!mDefaultGuestRestrictions.getBoolean(UserManager.DISALLOW_OUTGOING_CALLS));
|
||||||
}
|
}
|
||||||
mPhonePref.setOnPreferenceChangeListener(this);
|
if (RestrictedLockUtils.hasBaseUserRestriction(context,
|
||||||
|
UserManager.DISALLOW_REMOVE_USER, UserHandle.myUserId())) {
|
||||||
|
removePreference(KEY_REMOVE_USER);
|
||||||
}
|
}
|
||||||
|
mPhonePref.setOnPreferenceChangeListener(this);
|
||||||
@Override
|
|
||||||
public void onResume() {
|
|
||||||
super.onResume();
|
|
||||||
mRemoveUserPref.checkRestrictionAndSetDisabled(UserManager.DISALLOW_REMOVE_USER);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -633,6 +633,9 @@ public class WifiSettings extends RestrictedSettingsFragment
|
|||||||
// Safeguard from some delayed event handling
|
// Safeguard from some delayed event handling
|
||||||
if (getActivity() == null) return;
|
if (getActivity() == null) return;
|
||||||
if (isUiRestricted()) {
|
if (isUiRestricted()) {
|
||||||
|
if (!isUiRestrictedByOnlyAdmin()) {
|
||||||
|
addMessagePreference(R.string.wifi_empty_list_user_restricted);
|
||||||
|
}
|
||||||
getPreferenceScreen().removeAll();
|
getPreferenceScreen().removeAll();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -732,6 +735,9 @@ public class WifiSettings extends RestrictedSettingsFragment
|
|||||||
|
|
||||||
private void setOffMessage() {
|
private void setOffMessage() {
|
||||||
if (isUiRestricted()) {
|
if (isUiRestricted()) {
|
||||||
|
if (!isUiRestrictedByOnlyAdmin()) {
|
||||||
|
addMessagePreference(R.string.wifi_empty_list_user_restricted);
|
||||||
|
}
|
||||||
getPreferenceScreen().removeAll();
|
getPreferenceScreen().removeAll();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user