2013-08-05 1 views
3

포 그라운드 활동을 모니터하는 백그라운드에서 실행되는 서비스가 있습니다. 현재 이것은 사용자 (다중 사용자 계정 Android 4.2)를 구별하지 않습니다. 서비스가 실행중인 사용자와 전경 활동의 사용자를 비교할 수있는 방법이 있습니까? 나는 서비스가 실행중인 동일한 사용자 계정의 활동에만 관심이 있습니다.다중 사용자 시스템에서 UserHandle 활동을 얻는 방법

은 내가 사용할 수 있습니다 알고

android.os.Process.myUserHandle() 

이 서비스가 실행되고있는 UserHandle를 얻을 수 있습니다. 하지만 나에게 실행중인 Activity (ActivityManager.RunningAppProcessInfo 등)의 UserHandle을 줄 수있는 문서에서는 아무 것도 볼 수 없다.

아이디어가 있으십니까?

답변

1

서비스 내부에서 android.os.Binder.getCallingUid()을 사용하여 서비스를 호출하는 활동이 포함 된 프로세스의 전체 커널 uid을 얻을 수 있습니다. 이 결과를 android.os.Process.getUserId()을 통해 실행하여 두 자리 Android 사용자 핸들을 얻은 다음 android.os.Process.myUserHandle()과 비교하십시오.

+0

공용 API를 사용하여 UID를 userId로 변환 할 수 없습니다. UserHandle.getUserId가 공개되지 않았습니다. – ejboy

1

android.os.Process.myUserHandle()이 반환 한 사용자로 작업이 항상 실행됩니다.