2013-08-05 2 views
3

У меня есть служба, которая работает в фоновом режиме, которая контролирует активность переднего плана. В настоящее время это не отличает пользователей (многопользовательские учетные записи Android 4.2). Есть ли способ, с помощью которого служба может сравнивать пользователя, с которым он работает, с тем, что работает переднего плана? Меня интересуют только действия той же учетной записи пользователя, на которой работает служба.Как получить UserHandle активности в многопользовательской системе

Я знаю, что я могу использовать:

android.os.Process.myUserHandle() 

получить UserHandle, что служба работает под. Но я не вижу ничего в документах, которые могут дать мне UserHandle текущей активности (ActivityManager.RunningAppProcessInfo и т. Д.).

Любые идеи?

ответ

1

Изнутри службы вы можете использовать android.os.Binder.getCallingUid(), чтобы получить полное ядро ​​uid процесса, содержащего операцию, вызывающую службу. Запустите этот результат через android.os.Process.getUserId(), чтобы получить двухзначный пользовательский дескриптор Android и сравнить его с android.os.Process.myUserHandle().

+0

Вы не можете конвертировать UID в userId с использованием общедоступного API. UserHandle.getUserId не является общедоступным. – ejboy

1

Деятельность всегда работает как пользователь, возвращаемый android.os.Process.myUserHandle().

Смежные вопросы