Что такое метод bindServiceAsUser() в Android?

Я не могу понять, что это bindServiceAsUser() метод, используемый для. Может ли кто-нибудь, пожалуйста, любезно объяснить об этом? Поиск в Google, кажется, не очень помогает.

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

1 ответ

Как сказал Веско, в большинстве устройств 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();
        }

Я никогда не чувствовал необходимости использовать bindServiceAsUser()Но вот что говорит об этом документация Android:

То же, что bindService(android.content.Intent,android.content.ServiceConnection,int), но с явным аргументом userHandle для использования системным сервером и другим многопользовательским кодом.

Многопользовательская поддержка была добавлена ​​в Android 4.2 (API: 17), о ней читайте ЗДЕСЬ. В моем понимании это будет в основном использоваться производителями устройств, например, выпуская специальные устройства для мира Enterprise. Наилучший документ для многопользовательских пользователей, который я нашел, - ЭТОТ, вместе со всеми ссылками там.

Другие вопросы по тегам