Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get UserHandle of activity in multi user system

I have a service that runs in the background that monitors the foreground activity. At present this does not distinguish between users (multi user accounts Android 4.2). Is there a way that the service can compare the user it is running under with that of the foreground activity? I am only interested in activities of the same user account that the service is running under.

I know I can use:

android.os.Process.myUserHandle()

to get the UserHandle that the service is running under. But I can't see anything in the docs that can give me the UserHandle of a running activity (ActivityManager.RunningAppProcessInfo etc).

Any ideas?

like image 897
stevev Avatar asked Aug 05 '13 09:08

stevev


2 Answers

Activity always runs as user returned by android.os.Process.myUserHandle().

like image 188
ejboy Avatar answered Sep 27 '22 23:09

ejboy


From inside the service, you can use android.os.Binder.getCallingUid() to get the full kernel uid of the process containing the Activity that's calling the service. Run this result through android.os.Process.getUserId() to get the two digit Android user handle and compare it with android.os.Process.myUserHandle().

like image 37
Paul Ratazzi Avatar answered Sep 27 '22 23:09

Paul Ratazzi