Merge "Allow privileged apps to set the organization color." into nyc-dev

am: eff90bd5ff

* commit 'eff90bd5ff6bd50325149a5010183277bd76f4c6':
  Allow privileged apps to set the organization color.
This commit is contained in:
Nicolas Prévot
2016-02-15 10:51:42 +00:00
committed by android-build-merger
3 changed files with 37 additions and 0 deletions

View File

@@ -16,12 +16,14 @@
package android.app.admin;
import android.annotation.ColorInt;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SdkConstant;
import android.annotation.SdkConstant.SdkConstantType;
import android.annotation.SystemApi;
import android.annotation.UserIdInt;
import android.app.Activity;
import android.auditing.SecurityLog;
import android.auditing.SecurityLog.SecurityEvent;
@@ -5611,6 +5613,25 @@ public class DevicePolicyManager {
}
}
/**
* @hide
*
* Sets the color used for customization.
*
* @param color The 32bit representation of the color to be used.
* @param userId which user to set the color to.
* @RequiresPermission(allOf = {
* Manifest.permission.MANAGE_USERS,
* Manifest.permission.INTERACT_ACROSS_USERS_FULL})
*/
public void setOrganizationColorForUser(@ColorInt int color, @UserIdInt int userId) {
try {
mService.setOrganizationColorForUser(color, userId);
} catch (RemoteException re) {
Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
}
}
/**
* Called by a profile owner of a managed profile to retrieve the color used for customization.
* This color is used as background color of the confirm credentials screen for that user.

View File

@@ -277,6 +277,7 @@ interface IDevicePolicyManager {
boolean isSeparateProfileChallengeAllowed(int userHandle);
void setOrganizationColor(in ComponentName admin, in int color);
void setOrganizationColorForUser(in int color, in int userId);
int getOrganizationColor(in ComponentName admin);
int getOrganizationColorForUser(int userHandle);

View File

@@ -8324,6 +8324,21 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
}
}
@Override
public void setOrganizationColorForUser(int color, int userId) {
if (!mHasFeature) {
return;
}
enforceFullCrossUsersPermission(userId);
enforceManageUsers();
enforceManagedProfile(userId, "set organization color");
synchronized (this) {
ActiveAdmin admin = getProfileOwnerAdminLocked(userId);
admin.organizationColor = color;
saveSettingsLocked(userId);
}
}
@Override
public int getOrganizationColor(@NonNull ComponentName who) {
if (!mHasFeature) {