我无法理解用于什么的bindServiceAsUser()
方法。任何人都可以请它解释一下吗?谷歌搜索似乎没有多大帮助。
public boolean bindService(Intent intent, ServiceConnection connection, int flags) {
return mContext.bindServiceAsUser(intent, connection, flags, UserHandle.OWNER);
}
正如Vesko所说,在大多数Android设备中,多用户被禁用。一些设备制造商启用它。例如,您必须使用AIDl绑定服务,并在特权应用中禁用用户的功能。在这里,您需要知道绑定服务作为哪个用户。我们可以使用反射来调用bindServiceAsUser
。
UserManager um = (UserManager) getSystemService(Context.USER_SERVICE);
UserHandle owner = null;
owner = um.getUserForSerialNumber(0L);
try {
MethodUtils.invokeMethod(getApplicationContext(), "bindServiceAsUser", new Object[]{i, serviceConnection, Context.BIND_AUTO_CREATE, owner});
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}