Do not allow removing current user if it's in a call
Bug: 20652663 Change-Id: I2eb91bc73259e25b3fa68337df2a0576a438244a
This commit is contained in:
@@ -280,8 +280,10 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
@Override
|
@Override
|
||||||
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
||||||
int pos = 0;
|
int pos = 0;
|
||||||
UserManager um = (UserManager) getActivity().getSystemService(Context.USER_SERVICE);
|
UserManager um = getContext().getSystemService(UserManager.class);
|
||||||
if (!mUserCaps.mIsAdmin && !um.hasUserRestriction(UserManager.DISALLOW_REMOVE_USER)) {
|
boolean allowRemoveUser = !um.hasUserRestriction(UserManager.DISALLOW_REMOVE_USER);
|
||||||
|
boolean canSwitchUsers = um.canSwitchUsers();
|
||||||
|
if (!mUserCaps.mIsAdmin && allowRemoveUser && canSwitchUsers) {
|
||||||
String nickname = mUserManager.getUserName();
|
String nickname = mUserManager.getUserName();
|
||||||
MenuItem removeThisUser = menu.add(0, MENU_REMOVE_USER, pos++,
|
MenuItem removeThisUser = menu.add(0, MENU_REMOVE_USER, pos++,
|
||||||
getResources().getString(R.string.user_remove_user_menu, nickname));
|
getResources().getString(R.string.user_remove_user_menu, nickname));
|
||||||
@@ -630,10 +632,13 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void removeThisUser() {
|
private void removeThisUser() {
|
||||||
|
if (!mUserManager.canSwitchUsers()) {
|
||||||
|
Log.w(TAG, "Cannot remove current user when switching is disabled");
|
||||||
|
return;
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
ActivityManagerNative.getDefault().switchUser(UserHandle.USER_SYSTEM);
|
ActivityManagerNative.getDefault().switchUser(UserHandle.USER_SYSTEM);
|
||||||
((UserManager) getActivity().getSystemService(Context.USER_SERVICE))
|
getContext().getSystemService(UserManager.class).removeUser(UserHandle.myUserId());
|
||||||
.removeUser(UserHandle.myUserId());
|
|
||||||
} catch (RemoteException re) {
|
} catch (RemoteException re) {
|
||||||
Log.e(TAG, "Unable to remove self user");
|
Log.e(TAG, "Unable to remove self user");
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user