Part3 - Don't add padlock if the restriction is not set by admin.

Bug: 26687435
Change-Id: Ibfea6d7d5bd32e7a05dcc2cc32b121c9e50b6a34
This commit is contained in:
Sudheer Shanka
2016-02-11 18:48:14 +00:00
parent 7f2a013619
commit 9e9e63b7b3
21 changed files with 207 additions and 84 deletions

View File

@@ -395,7 +395,10 @@ public class StorageSettings extends SettingsPreferenceFragment implements Index
EnforcedAdmin admin = RestrictedLockUtils.checkIfRestrictionEnforced(
getActivity(), UserManager.DISALLOW_MOUNT_PHYSICAL_MEDIA,
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);
return;
}

View File

@@ -22,6 +22,7 @@ import android.content.pm.PackageManager;
import android.hardware.usb.UsbManager;
import android.hardware.usb.UsbPort;
import android.hardware.usb.UsbPortStatus;
import android.os.UserHandle;
import android.os.UserManager;
public class UsbBackend {
@@ -37,6 +38,7 @@ public class UsbBackend {
public static final int MODE_DATA_MIDI = 0x03 << 1;
private final boolean mRestricted;
private final boolean mRestrictedBySystem;
private final boolean mMidi;
private UserManager mUserManager;
@@ -56,6 +58,8 @@ public class UsbBackend {
mUsbManager = context.getSystemService(UsbManager.class);
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);
UsbPort[] ports = mUsbManager.getPorts();
@@ -134,7 +138,7 @@ public class UsbBackend {
? 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
&& (mode & MODE_DATA_MASK) != MODE_DATA_MIDI) {
// No USB data modes are supported.
@@ -143,6 +147,15 @@ public class UsbBackend {
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) {
if (!mMidi && (mode & MODE_DATA_MASK) == MODE_DATA_MIDI) {
return false;

View File

@@ -106,9 +106,10 @@ public class UsbModeChooserActivity extends Activity {
mBackend = new UsbBackend(this);
int current = mBackend.getCurrentMode();
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,
mBackend.isModeDisallowedByAdmin(DEFAULT_MODES[i]));
mBackend.isModeDisallowed(DEFAULT_MODES[i]));
}
}
}