获取当前用户/用户ID
1.android.os.Process.myUserHandle()
2.UserHandle.myUserId()
3.UserHandle.getUserId(android.os.Process.myUid())
4.UserManager um = (UserManager) this.getSystemService(Context.USER_SERVICE);
UserHandle user = um.getUserForSerialNumber(ActivityManager.getCurrentUser());
ActivityManager.getCurrentUser
这是一个hide的API,而且需要是system permission。
system permission
.AndroidManifest.xml里面定义android:sharedUserId=“android.uid.system”
.Android.mk里面定义签名LOCAL_CERTIFICATE := platform
还需要android.permission.INTERACT_ACROSS_USERS权限。
所以说这种用法的限制条件比较多。
如果是一般的app,建议用1~3的方法,但是如果是SystemUI里面的话,有可能1~3并不能取到正确的id,
所以这个时候,可以考虑用4的这种方法。
获取OWNER的方法
UserHandle.USER_OWNER
UserHandle和userId转换
UserHandle->userId
UserManager um = (UserManager) context.getSystemService(Context.USER_SERVICE);
userId = um.getSerialNumberForUser(user);
userId->UserHandle
user = um.getUserForSerialNumber(userId);