如何从具有android的服务启动触觉:单用户和权限跨用户交互

如何从具有android的服务启动触觉:单用户和权限跨用户交互,android,android-activity,android-service,multi-user,Android,Android Activity,Android Service,Multi User,我希望扩展我的应用程序来处理Android L中引入的来宾模式。我发现,如果我使用Android创建一个服务:AndroidManifest中的singleUser,具有跨用户交互的权限,并且通过在/system/priv-app中安装它,我是一个系统应用程序,那么即使我切换用户,我的服务也在运行。但我的应用程序需要与用户交互,通过启动活动、显示祝酒词或通知。所有这些事情似乎都不可能。当我调用startActivity时,是否需要设置一个特定的标志,以便它从我的服务启动一个新的活动?我找到了一种

我希望扩展我的应用程序来处理Android L中引入的来宾模式。我发现,如果我使用Android创建一个服务:AndroidManifest中的singleUser,具有跨用户交互的权限,并且通过在/system/priv-app中安装它,我是一个系统应用程序,那么即使我切换用户,我的服务也在运行。但我的应用程序需要与用户交互,通过启动活动、显示祝酒词或通知。所有这些事情似乎都不可能。当我调用startActivity时,是否需要设置一个特定的标志,以便它从我的服务启动一个新的活动?

我找到了一种方法。基本上有一个singleton服务,这是一个带有android:singleUser=“true”和跨用户交互的服务,并且在/system/priv应用程序中安装了APK。然后将其广播给所有用户。您需要使用反射来访问UserManager中的方法。然后有一个接收器实例,它将在来宾用户空间中接收广播,然后有接收器startActivity。

有几个内部API(注释为@hide),如Context.startActivityAsUser、NotificationManager.notifyAsUser来支持它,但它也需要从源代码构建并带有平台签名。

APK是如何安装到/system/priv应用程序的?