如何从具有android:singleUser和权限INTERACT_ACROSS_USERS的服务启动活动

时间:2015-03-31 00:34:56

标签: android android-activity android-service multi-user

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

2 个答案:

答案 0 :(得分:0)

我找到了办法。基本上有一个单件服务,这是一个与android的服务:singleUser =" true"并使用INTERACT_ACROSS_USERS并在/ system / priv-app中安装APK。然后让它向所有用户广播AsUser。您需要使用反射来访问UserManager中的方法。然后有一个接收器实例,它将在访客用户的空间中接收广播,然后让接收器具有startActivity。

答案 1 :(得分:0)

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