【问题标题】:How to know if the android device supports multi users?如何知道安卓设备是否支持多用户?
【发布时间】:2013-01-14 14:56:49
【问题描述】:

Android 4.2 支持“在平板电脑等共享设备上”(http://developer.android.com/about/versions/android-4.2.html#MultipleUsers) 的多个用户空间。我如何知道特定设备是否为“可共享设备”?

我能否以编程方式检查设备是否支持多个用户?

【问题讨论】:

  • 我不知道,不幸的是,至少以任何可靠的方式。 API 级别 17 意味着操作系统能够支持多个用户空间,但是否有设置选项会有所不同。我认为该计划是让平板电脑大小的设备拥有多个用户,而手机大小的设备则没有,但这可能最终成为制造商的选择。

标签: android android-multiple-users


【解决方案1】:

在 UserManager.supportsMultipleUsers() 中有一个隐藏的 API。您可以使用以下使用反射的方法来访问它,但通常不建议使用此技术,因为 API 可能会在以后的版本中更改。

public static boolean supportsMultipleUsers() {
  try {
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
     // return UserManager.supportsMultipleUsers();
     return (Boolean(UserManager.class.getDeclaredMethod("supportsMultipleUsers").invoke(null));
  }
  catch (Exception e) {}
  return false;
}

【讨论】:

    【解决方案2】:

    如果您可以检查设备上是否创建了多个用户帐户,则可以使用UserManager.getUserCount()(确保SDK版本> 16)。

    我不知道是否可以区分理论上是否可以多用户,但到目前为止只使用了一个,根本不支持多用户。

    编辑: 这个解决方案实际上不起作用,它似乎需要系统级权限。详情见这里UserManager getUserCount() (Jelly Bean)

    【讨论】:

    • 这很好,但这并不是我想要的。但我认为没有办法知道是否可能拥有多个帐户。
    • 是否需要任何权限?根据此链接:stackoverflow.com/q/13508258/878126,似乎不可能这样做,因为它是系统权限。也许可以使用root?
    • 抱歉回复太晚了。我实际上从未尝试过,但基于这个问题似乎是这样:stackoverflow.com/q/13508258/1966616
    【解决方案3】:

    您可以使用以下代码查看Android版本:

    int oSversion = Integer.valueOf(android.os.Build.VERSION.SDK_INT);
    
    if (osVersion > 16) {
       // This phone supports multi-user   
    }
    

    【讨论】:

    • 那行不通。 Nexus 10 允许多个用户空间,而 Galaxy Nexus 则不允许,每个用户空间都运行 Android 4.2,SDK_INT(注意:不是SDK)为 17。
    • 嗯,Build.VERSION.SDK_INT
    猜你喜欢
    • 2013-04-04
    • 2013-01-23
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多