Android - 如何以用户名以编程方式切换用户?

时间:2017-02-27 13:58:38

标签: android

我是Android新手,我必须在工作中执行以下任务:

  1. 我听一个应该给我发送用户名的套接字。
  2. 收到用户名后,我需要在平板电脑上切换到该用户帐户。
  3. 如果我收到与当前活跃用户相同的用户名,我就不需要切换(显然)。
  4. 我们的平板电脑已植根并使用Android 5.1.1 Lollipop运行CyanogenMod 12.1。 由于这不是将从Play商店下载的商业版本,我可以假设我可能需要的所有权限都将被授予。

    我搜索了一个干净的代码方式来做到这一点,而不运行shell命令或其他黑客,但无法找到任何东西......

2 个答案:

答案 0 :(得分:1)

Haven自己尝试过,但您应该能够在设备上设置所有UserHandle,然后使用DevicePolicyManager switchUser() method

UserManager um = (UserManager) getSystemService(USER_SERVICE);
List<UserHandle> userProfiles = um.getUserProfiles();

为了实现这一目标,您必须set your app as a device administrator(不应该是一个问题,因为您说它是一个内部完全托管的应用程序)

答案 1 :(得分:0)

成为设备所有者后,您是否设法获得用户名? 可以使用getUserProfiles和getSecondaryUsers,但是它们都返回UserHandle。我无法在创建时注册用户名。 似乎唯一的方法是向清单添加MANAGE_USERS权限,但假定该应用程序是系统应用程序: https://developer.android.com/reference/android/os/UserManager#getUserName()

我想我会在某个地方创建一个持久列表。