Android:检查当前用户是否是访客

问题描述

我通读了 UserManager 和 UserHandle 文档,但找不到任何可以返回布尔值来回答问题的方法。任何人都知道如何确定这一点?

解决方法

UserInfo 类具有“isGuest()”方法返回一个布尔值,UserManager.getUsers() 返回一个 UserInfo 类型的列表。但是,所有这些方法都是隐藏的,第 3 方应用程序不支持。

此外,getUsers() 方法需要“android.Manifest.permission.MANAGE_USERS”权限,这仅适用于系统(或任何具有该平台的应用程序)密钥,或者如果您的应用程序仅在 Android 模拟器上运行,因为它获得默认平台密钥)。因此,即使您找到任何使用平台签名对应用程序进行签名的方法,它也肯定会在一个或多个 Android 版本上崩溃。

虽然您可以尝试使用反射来获取 getUsers() 的访问权限,如下所示:

UserManager manager = (UserManager)getSystemService(USER_SERVICE);
Method method = manager.getClass().getMethod("getUsers",null);
Object users = method.invoke(manager,null);

但是,似乎也不能保证你会在这里得到你想要的东西。