Merge "Added AM APIs to get switch from / to user messages." into sc-v2-dev

This commit is contained in:
Felipe Leme
2021-11-23 00:25:49 +00:00
committed by Android (Google) Code Review
4 changed files with 72 additions and 3 deletions

View File

@@ -4075,6 +4075,34 @@ public class ActivityManager {
return switchUser(user.getIdentifier());
}
/**
* Gets the message that is shown when a user is switched from.
*
* @hide
*/
@RequiresPermission(Manifest.permission.MANAGE_USERS)
public @Nullable String getSwitchingFromUserMessage() {
try {
return getService().getSwitchingFromUserMessage();
} catch (RemoteException re) {
throw re.rethrowFromSystemServer();
}
}
/**
* Gets the message that is shown when a user is switched to.
*
* @hide
*/
@RequiresPermission(Manifest.permission.MANAGE_USERS)
public @Nullable String getSwitchingToUserMessage() {
try {
return getService().getSwitchingToUserMessage();
} catch (RemoteException re) {
throw re.rethrowFromSystemServer();
}
}
/**
* Uses the value defined by the platform.
*

View File

@@ -338,6 +338,8 @@ interface IActivityManager {
void setPackageScreenCompatMode(in String packageName, int mode);
@UnsupportedAppUsage
boolean switchUser(int userid);
String getSwitchingFromUserMessage();
String getSwitchingToUserMessage();
@UnsupportedAppUsage
void setStopUserOnSwitch(int value);
boolean removeTask(int taskId);

View File

@@ -15090,6 +15090,16 @@ public class ActivityManagerService extends IActivityManager.Stub
return mUserController.switchUser(targetUserId);
}
@Override
public String getSwitchingFromUserMessage() {
return mUserController.getSwitchingFromSystemUserMessage();
}
@Override
public String getSwitchingToUserMessage() {
return mUserController.getSwitchingToSystemUserMessage();
}
@Override
public void setStopUserOnSwitch(@StopUserOnSwitch int value) {
mUserController.setStopUserOnSwitch(value);

View File

@@ -1792,7 +1792,8 @@ class UserController implements Handler.Callback {
private void showUserSwitchDialog(Pair<UserInfo, UserInfo> fromToUserPair) {
// The dialog will show and then initiate the user switch by calling startUserInForeground
mInjector.showUserSwitchingDialog(fromToUserPair.first, fromToUserPair.second,
getSwitchingFromSystemUserMessage(), getSwitchingToSystemUserMessage());
getSwitchingFromSystemUserMessageUnchecked(),
getSwitchingToSystemUserMessageUnchecked());
}
private void dispatchForegroundProfileChanged(@UserIdInt int userId) {
@@ -2564,18 +2565,40 @@ class UserController implements Handler.Callback {
}
}
private String getSwitchingFromSystemUserMessage() {
// Called by AMS, must check permission
String getSwitchingFromSystemUserMessage() {
checkHasManageUsersPermission("getSwitchingFromSystemUserMessage()");
return getSwitchingFromSystemUserMessageUnchecked();
}
// Called by AMS, must check permission
String getSwitchingToSystemUserMessage() {
checkHasManageUsersPermission("getSwitchingToSystemUserMessage()");
return getSwitchingToSystemUserMessageUnchecked();
}
private String getSwitchingFromSystemUserMessageUnchecked() {
synchronized (mLock) {
return mSwitchingFromSystemUserMessage;
}
}
private String getSwitchingToSystemUserMessage() {
private String getSwitchingToSystemUserMessageUnchecked() {
synchronized (mLock) {
return mSwitchingToSystemUserMessage;
}
}
private void checkHasManageUsersPermission(String operation) {
if (mInjector.checkCallingPermission(
android.Manifest.permission.MANAGE_USERS) == PackageManager.PERMISSION_DENIED) {
throw new SecurityException(
"You need MANAGE_USERS permission to call " + operation);
}
}
void dumpDebug(ProtoOutputStream proto, long fieldId) {
synchronized (mLock) {
long token = proto.start(fieldId);
@@ -2648,6 +2671,12 @@ class UserController implements Handler.Callback {
pw.println(" mMaxRunningUsers:" + mMaxRunningUsers);
pw.println(" mUserSwitchUiEnabled:" + mUserSwitchUiEnabled);
pw.println(" mInitialized:" + mInitialized);
if (mSwitchingFromSystemUserMessage != null) {
pw.println(" mSwitchingFromSystemUserMessage: " + mSwitchingFromSystemUserMessage);
}
if (mSwitchingToSystemUserMessage != null) {
pw.println(" mSwitchingToSystemUserMessage: " + mSwitchingToSystemUserMessage);
}
}
}