我正在构建一个不包含任何 UI 的 Android Automotive system 应用程序。
此服务充当设备上的本地后端/代理,等待来自其他应用程序的请求,执行所需的操作并返回所需的数据作为响应。
服务和其他应用程序之间的大部分交互都是使用 AIDL 处理的。
两个问题:
singleUser=true
,但没有帮助,仍然为每个用户创建两个进程。PackageManager.setApplicationEnabledSetting()
禁用该应用程序,就像 Google 建议的 here 一样。问题是,当其他应用程序尝试使用 AIDL 服务进行通信时,我收到以下错误。值得一提的是,每项服务都标有android:exported="true"
和android:singleUser="true"
。据我所知,将服务标记为 singleUser=true
应该使所有调用都路由 到系统用户上运行的服务。
我在当前的实施中遗漏了什么吗?ActivityManager:无法启动服务意图{ act=com.companyName.appName.services.serviceName pkg=com.companyName.appName } U=12:未找到
Context.bindServiceAsUser()
绑定。您需要 android.permission.INTERACT_ACROSS_USERS
并且两个包必须具有相同的签名。请参阅文档:Building Multiuser-Aware Apps
。