Headless fixes for cross profile apps.
Test: btest a.d.c.CrossProfileAppsTest Bug: 278891585 Change-Id: I6430752702d3b08a6d6c08659e3c7ac40ad5e5c9
This commit is contained in:
@@ -9599,6 +9599,7 @@ public class DevicePolicyManager {
|
||||
} catch (RemoteException e) {
|
||||
throw e.rethrowFromSystemServer();
|
||||
} catch (IllegalArgumentException ex) {
|
||||
Log.e(TAG, "IllegalArgumentException checking isPackageSuspended", ex);
|
||||
throw new NameNotFoundException(packageName);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7513,6 +7513,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
|
||||
boolean success = false;
|
||||
try {
|
||||
if (getCurrentForegroundUserId() == userId) {
|
||||
// TODO: We need to special case headless here as we can't switch to the system user
|
||||
mInjector.getIActivityManager().switchUser(UserHandle.USER_SYSTEM);
|
||||
}
|
||||
|
||||
@@ -7520,7 +7521,8 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
|
||||
if (!success) {
|
||||
Slogf.w(LOG_TAG, "Couldn't remove user " + userId);
|
||||
} else if (isManagedProfile(userId) && !wipeSilently) {
|
||||
sendWipeProfileNotification(wipeReasonForUser);
|
||||
sendWipeProfileNotification(wipeReasonForUser,
|
||||
UserHandle.of(getProfileParentId(userId)));
|
||||
}
|
||||
} catch (RemoteException re) {
|
||||
// Shouldn't happen
|
||||
@@ -7868,7 +7870,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
|
||||
});
|
||||
}
|
||||
|
||||
private void sendWipeProfileNotification(String wipeReasonForUser) {
|
||||
private void sendWipeProfileNotification(String wipeReasonForUser, UserHandle user) {
|
||||
Notification notification =
|
||||
new Notification.Builder(mContext, SystemNotificationChannels.DEVICE_ADMIN)
|
||||
.setSmallIcon(android.R.drawable.stat_sys_warning)
|
||||
@@ -7877,7 +7879,8 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
|
||||
.setColor(mContext.getColor(R.color.system_notification_accent_color))
|
||||
.setStyle(new Notification.BigTextStyle().bigText(wipeReasonForUser))
|
||||
.build();
|
||||
mInjector.getNotificationManager().notify(SystemMessage.NOTE_PROFILE_WIPED, notification);
|
||||
mInjector.getNotificationManager().notifyAsUser(
|
||||
/* tag= */ null, SystemMessage.NOTE_PROFILE_WIPED, notification, user);
|
||||
}
|
||||
|
||||
private String getWorkProfileDeletedTitle() {
|
||||
@@ -16895,6 +16898,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
|
||||
} else {
|
||||
granted = PackageManager.PERMISSION_GRANTED;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -19998,6 +20002,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
|
||||
if (!mHasFeature) {
|
||||
return;
|
||||
}
|
||||
|
||||
Objects.requireNonNull(who, "ComponentName is null");
|
||||
Objects.requireNonNull(packageNames, "Package names is null");
|
||||
final CallerIdentity caller = getCallerIdentity(who);
|
||||
@@ -20014,9 +20019,12 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
|
||||
saveSettingsLocked(caller.getUserId());
|
||||
}
|
||||
logSetCrossProfilePackages(who, packageNames);
|
||||
final CrossProfileApps crossProfileApps = mContext.getSystemService(CrossProfileApps.class);
|
||||
final CrossProfileApps crossProfileApps =
|
||||
mContext.createContextAsUser(
|
||||
caller.getUserHandle(), /* flags= */ 0)
|
||||
.getSystemService(CrossProfileApps.class);
|
||||
mInjector.binderWithCleanCallingIdentity(
|
||||
() -> crossProfileApps.resetInteractAcrossProfilesAppOps(
|
||||
() -> crossProfileApps.resetInteractAcrossProfilesAppOps(
|
||||
previousCrossProfilePackages, new HashSet<>(packageNames)));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user