5

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

    public boolean bindService(Intent intent, ServiceConnection connection, int flags) {
    return mContext.bindServiceAsUser(intent, connection, flags, UserHandle.OWNER);
}
4

2 回答 2

1

我从来没有觉得有必要使用bindServiceAsUser(),但以下是 Android 文档必须说的:

与 bindService(android.content.Intent,android.content.ServiceConnection,int) 相同,但有一个明确的 userHandle 参数供系统服务器和其他多用户感知代码使用。

Android 4.2 (API: 17) 中添加了多用户支持,请在此处阅读。据我了解,它将主要由设备制造商使用,例如为企业世界发布特殊设备。我发现的针对多用户的最佳文档是THIS,以及那里的所有引用链接。

于 2015-06-03T09:04:20.813 回答
1

正如 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();
        }
于 2019-04-20T13:13:17.303 回答