Android:检查当前用户是不是是客人
Posted
技术标签:
【中文标题】Android:检查当前用户是不是是客人【英文标题】:Android: Check if Current User is a guestAndroid:检查当前用户是否是客人 【发布时间】:2021-08-28 17:11:39 【问题描述】:我阅读了 UserManager 和 UserHandle 文档,但找不到任何可以返回布尔值来回答问题的方法。有人知道如何确定吗?
【问题讨论】:
请检查:***.com/questions/14749504/… @Akki,这是如果用户是所有者,而不是如果他们是客人。来宾没有 const,因此此方法不起作用 我认为没有任何直接的方法可以满足您的要求。 【参考方案1】:UserInfo 类有“isGuest()”方法返回一个布尔值,UserManager.getUsers() 返回一个 UserInfo 类型的列表。但是,所有这些方法都是隐藏的,不支持 3rd 方应用程序。
此外,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);
但是,似乎不能保证你会在这里得到你想要的。
【讨论】:
反射不再适用于 Android 28+ 就是这样,我试图用“似乎无法保证你会在这里得到你想要的东西”这样说。如果可能的话,我也在寻找解决方案。以上是关于Android:检查当前用户是不是是客人的主要内容,如果未能解决你的问题,请参考以下文章