如何在多用户系统中获取活动的 UserHandle

ste*_*vev 7 android android-package-managers android-activity

我有一个在后台运行的服务来监控前台活动。目前这个不区分用户(多用户帐户Android 4.2)。有没有办法让服务可以将它运行的用户与前台活动的用户进行比较?我只对运行该服务的同一用户帐户的活动感兴趣。

我知道我可以使用:

android.os.Process.myUserHandle()
Run Code Online (Sandbox Code Playgroud)

获取运行服务的 UserHandle。但是我在文档中看不到任何可以为我提供正在运行的活动(ActivityManager.RunningAppProcessInfo 等)的 UserHandle 的内容。

有任何想法吗?

ejb*_*boy 6

活动始终以 返回的用户身份运行android.os.Process.myUserHandle()


Pau*_*zzi 4

从服务内部,您可以用来获取包含调用该服务的 Activity 的进程的android.os.Binder.getCallingUid()完整内核。uid运行此结果以android.os.Process.getUserId()获取两位数的 Android 用户句柄并将其与 进行比较android.os.Process.myUserHandle()

  • 您无法使用公共 API 将 UID 转换为 userId。UserHandle.getUserId 不是公开的。 (2认同)