Эта служба действует как локальная серверная часть/прокси-сервер на устройстве. ожидание запросов от других приложений, выполнение желаемого действия и возврат необходимых данных в качестве ответа.
Взаимодействие между службой и другими приложениями должно осуществляться с помощью AIDL.
Два вопроса:
- Поскольку в нашей системе знают несколько пользователей, создаются два процесса, по одному для каждого пользователя — пользователя системы ( пользователь №0) и обычный пользователь (пользователь №12). Есть ли способ уведомить систему о создании процесса только для пользователя системы? Я пытался пометить получателя как singleUser=true, но это не помогло, для каждого пользователя по-прежнему создаются два процесса.
- Другой подход, который я использовал, заключался в идентификации на приемнике завершенной загрузки, какой пользователь в данный момент работает, и в этом случае обычный пользователь отключил приложение с помощью PackageManager.setApplicationEnabledSetting(), как предложил здесь Google. Проблема в том, что когда другое приложение пытается связаться с помощью службы AIDL, я получаю следующую ошибку. Стоит отметить, что каждая служба отмечена android:exported="true" и android:singleUser="true". Насколько я знаю, отметка службы как SingleUser=true должна перенаправлять все вызовы в службу, работающую у системного пользователя.
Я что-то упустил в текущей реализации?
act=com.companyName.appName.services.serviceName
pkg= com.companyName.appName } U=12: не найден
Подробнее здесь: https://stackoverflow.com/questions/766 ... ser-0-only