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