如何从主要个人资料中的应用获取我的工作资料应用的启动意图?

时间:2019-06-06 20:41:40

标签: android android-intent android-enterprise

此问题针对Android for work。

在此guide之后,我编写了一个包含DevicePolicyController的应用程序。控制器为我的Android设备创建一个托管配置文件。

我在该个人资料中添加了一个名为 FooApp 的应用。 现在,我可以在启动器中看到两个 FooApp 图标,一个带有工作徽章,另一个没有。

我还有一个应用程序 BarApp ,该应用程序仅在主配置文件中。 如何在 BarApp 中获得 FooApp 工作版本的启动意图? (从 BarApp 中启动 FooApp 的工作版本)

我无法像在API 23上那样使用CrossProfileApps

1 个答案:

答案 0 :(得分:0)

未经用户同意,我想出的解决方案是不会发生的。也许将来会有更好的选择。但这是我的:

我在 FooApp 的清单中为FooActivity添加了以下意图过滤器。

<intent-filter>
    <action android:name="com.example.FooApp.ACTION_HOMELAUNCHER"/>
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

然后,我为我的工作资料添加了一个crossProfileIntentfilter(将以下代码放入当前在工作资料中运行的概要管理应用程序中。)

DevicePolicyManager manager =
            (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName componentName = BasicDeviceAdminReceiver.getComponentName(context);
IntentFilter filterin = new IntentFilter("com.example.FooApp.ACTION_HOMELAUNCHER");
manager.addCrossProfileIntentFilter(componentName, filterin, DevicePolicyManager.FLAG_MANAGED_CAN_ACCESS_PARENT);

最后,当我想在工作资料中启动该应用程序时,我从 BarApp 触发ACTION_HOMELAUNCHER意向,然后用户可以选择是否要取消工作资料版本或 FooApp 的常规版本。

随时根据此答案进行改进。