Skip to content

Commit bc4ba82

Browse files
author
Amith Yamasani
committed
Remove user switcher from long-press power menu
Bug: 7252218 Also lock the screen before doing the user switch. This prevents the janky behavior of showing the target user's homescreen after the switch and then the lock screen. This is also a privacy issue. Change-Id: I9f8db047335d06fc93505d7b5cca71e27ca3ac39
1 parent 195b6e1 commit bc4ba82

File tree

2 files changed

+35
-27
lines changed

2 files changed

+35
-27
lines changed

policy/src/com/android/internal/policy/impl/GlobalActions.java

Lines changed: 34 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,39 @@ public boolean showBeforeProvisioning() {
286286
mItems.add(mSilentModeAction);
287287
}
288288

289+
// one more thing: optionally add a list of users to switch to
290+
if (SystemProperties.getBoolean("fw.power_user_switcher", false)) {
291+
addUsersToMenu(mItems);
292+
}
293+
294+
mAdapter = new MyAdapter();
295+
296+
AlertParams params = new AlertParams(mContext);
297+
params.mAdapter = mAdapter;
298+
params.mOnClickListener = this;
299+
params.mForceInverseBackground = true;
300+
301+
GlobalActionsDialog dialog = new GlobalActionsDialog(mContext, params);
302+
dialog.setCanceledOnTouchOutside(false); // Handled by the custom class.
303+
304+
dialog.getListView().setItemsCanFocus(true);
305+
dialog.getListView().setLongClickable(true);
306+
dialog.getListView().setOnItemLongClickListener(
307+
new AdapterView.OnItemLongClickListener() {
308+
@Override
309+
public boolean onItemLongClick(AdapterView<?> parent, View view, int position,
310+
long id) {
311+
return mAdapter.getItem(position).onLongPress();
312+
}
313+
});
314+
dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG);
315+
316+
dialog.setOnDismissListener(this);
317+
318+
return dialog;
319+
}
320+
321+
private void addUsersToMenu(ArrayList<Action> items) {
289322
List<UserInfo> users = ((UserManager) mContext.getSystemService(Context.USER_SERVICE))
290323
.getUsers();
291324
if (users.size() > 1) {
@@ -320,35 +353,9 @@ public boolean showBeforeProvisioning() {
320353
return false;
321354
}
322355
};
323-
mItems.add(switchToUser);
356+
items.add(switchToUser);
324357
}
325358
}
326-
327-
mAdapter = new MyAdapter();
328-
329-
AlertParams params = new AlertParams(mContext);
330-
params.mAdapter = mAdapter;
331-
params.mOnClickListener = this;
332-
params.mForceInverseBackground = true;
333-
334-
GlobalActionsDialog dialog = new GlobalActionsDialog(mContext, params);
335-
dialog.setCanceledOnTouchOutside(false); // Handled by the custom class.
336-
337-
dialog.getListView().setItemsCanFocus(true);
338-
dialog.getListView().setLongClickable(true);
339-
dialog.getListView().setOnItemLongClickListener(
340-
new AdapterView.OnItemLongClickListener() {
341-
@Override
342-
public boolean onItemLongClick(AdapterView<?> parent, View view, int position,
343-
long id) {
344-
return mAdapter.getItem(position).onLongPress();
345-
}
346-
});
347-
dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG);
348-
349-
dialog.setOnDismissListener(this);
350-
351-
return dialog;
352359
}
353360

354361
private void prepareDialog() {

services/java/com/android/server/am/ActivityManagerService.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14057,6 +14057,7 @@ public boolean switchUser(int userId) {
1405714057
return false;
1405814058
}
1405914059

14060+
mWindowManager.lockNow();
1406014061
mWindowManager.startFreezingScreen(R.anim.screen_user_exit,
1406114062
R.anim.screen_user_enter);
1406214063

0 commit comments

Comments
 (0)