Make DPM.clearProfileOwner() public.

Bug 26827204

Change-Id: Ib32e5370b493aa3e36b869d9ed3d78782df4c895
This commit is contained in:
Makoto Onuki
2016-01-27 13:49:19 -08:00
parent 5ddbc2af0c
commit 5bf68027cf
4 changed files with 7 additions and 5 deletions

View File

@@ -5788,6 +5788,7 @@ package android.app.admin {
method public void clearCrossProfileIntentFilters(android.content.ComponentName);
method public void clearDeviceOwnerApp(java.lang.String);
method public void clearPackagePersistentPreferredActivities(android.content.ComponentName, java.lang.String);
method public void clearProfileOwner(android.content.ComponentName);
method public void clearUserRestriction(android.content.ComponentName, java.lang.String);
method public deprecated android.os.UserHandle createAndInitializeUser(android.content.ComponentName, java.lang.String, java.lang.String, android.content.ComponentName, android.os.Bundle);
method public android.os.UserHandle createAndManageUser(android.content.ComponentName, java.lang.String, android.content.ComponentName, android.os.PersistableBundle, int);

View File

@@ -5790,6 +5790,7 @@ package android.app.admin {
method public void clearCrossProfileIntentFilters(android.content.ComponentName);
method public void clearDeviceOwnerApp(java.lang.String);
method public void clearPackagePersistentPreferredActivities(android.content.ComponentName, java.lang.String);
method public void clearProfileOwner(android.content.ComponentName);
method public void clearUserRestriction(android.content.ComponentName, java.lang.String);
method public deprecated android.os.UserHandle createAndInitializeUser(android.content.ComponentName, java.lang.String, java.lang.String, android.content.ComponentName, android.os.Bundle);
method public android.os.UserHandle createAndManageUser(android.content.ComponentName, java.lang.String, android.content.ComponentName, android.os.PersistableBundle, int);

View File

@@ -3185,15 +3185,14 @@ public class DevicePolicyManager {
}
/**
* @hide
* Clears the active profile owner and removes all user restrictions. The caller must
* be from the same package as the active profile owner for this user, otherwise a
* SecurityException will be thrown.
*
* <p>This doesn't work for managed profile owners.
*
* @param admin The component to remove as the profile owner.
* @return
*/
@SystemApi
public void clearProfileOwner(@NonNull ComponentName admin) {
if (mService != null) {
try {

View File

@@ -5343,7 +5343,9 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
if (!mHasFeature) {
return;
}
UserHandle callingUser = mInjector.binderGetCallingUserHandle();
final UserHandle callingUser = mInjector.binderGetCallingUserHandle();
final int userId = callingUser.getIdentifier();
enforceNotManagedProfile(userId, "clear profile owner");
// Check if this is the profile owner who is calling
final ActiveAdmin admin =
getActiveAdminForCallerLocked(who, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER);
@@ -5351,7 +5353,6 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
admin.disableCamera = false;
admin.userRestrictions = null;
clearUserPoliciesLocked(callingUser);
final int userId = callingUser.getIdentifier();
mOwners.removeProfileOwner(userId);
mOwners.writeProfileOwner(userId);
}