如何从我的主要配置文件中的应用程序获取我的工作配置文件应用程序的启动意图?

How do i get the launch intent for my work profile app from my app in the primary profile?

此问题针对 Android 工作。

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

我在该配置文件中添加了一个名为 FooApp 的应用程序。 现在我可以在我的启动器中看到 FooApp 的两个图标,一个有工作徽章,一个没有。

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

我无法使用 CrossProfileApps 因为我在 API 23.

未经用户同意,我想出的解决方案无法实现。也许将来会有更好的。但这是我的:

我在 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 意图,然后用户可以 select, 是否要启动工作配置文件版本或普通版本 FooApp.

随时改进此答案。