多用户相关

mac2022-06-30  85

获取当前用户/用户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);

 

转载于:https://www.cnblogs.com/minminjy123/p/5345211.html

最新回复(0)