Android中的bindServiceAsUser()方法是什么?

问题描述 投票:2回答:2

我无法理解用于什么的bindServiceAsUser()方法。任何人都可以请它解释一下吗?谷歌搜索似乎没有多大帮助。

    public boolean bindService(Intent intent, ServiceConnection connection, int flags) {
    return mContext.bindServiceAsUser(intent, connection, flags, UserHandle.OWNER);
}
android android-context bindservice
2个回答
0
投票

我从来没有觉得需要使用bindServiceAsUser(),但这是Android文档中有关它的说法:

与bindService(android.content.Intent,android.content.ServiceConnection,int)相同,但具有显式的userHandle参数供系统服务器和其他多用户识别代码使用。

在Android 4.2(API:17)中添加了多用户支持,阅读有关它的HERE。据我所知,它主要用于设备制造商,例如为企业界发布特殊设备。我找到的多用户最好的文档是THIS,以及所有引用的链接。


0
投票

正如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();
        }
© www.soinside.com 2019 - 2024. All rights reserved.