我正在寻找一种方法来获取 Android 中当前的活跃用户。我正在构建一个系统应用程序,以便我可以使用隐藏方法,但具体来说它必须是当前的活动用户,而不是给定进程的用户。
例如,如果您使用 ADB 安装应用程序,则进程会显示用户 ID 是所有者。这意味着 UserHandle.myUserId() 将无法满足我的需要:(
所以我找到了一种完全符合我需要的方法。 ActivityManager 中有一个隐藏的静态方法(因此您需要施展一些魔法才能访问它),但它是:
ActivityManager.getCurrentUser();
仅此而已。
我使用 ProcessBuilder 运行 shell 命令“whoami”。
ProcessBuilder pb = new ProcessBuilder("whoami");
Process process = pb.start();
// finally read the process output
它有效。