Что такое метод 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. Наилучший документ для многопользовательских пользователей, который я нашел, - ЭТОТ, вместе со всеми ссылками там.