Решение, которое я придумал, не может произойти без согласия пользователей. Может быть, будет лучше в будущем. Но вот мое:
Я добавил следующий фильтр намерений для FooActivity в манифесте FooApp .
<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);
В конце, когда я хочу запустить приложение в рабочем профиле, я запускаю намерение ACTION_HOMELAUNCHER
из BarApp , а затем пользователь может выбрать, хочет ли он запустить версию рабочего профиля. или обычная версия FooApp .
Не стесняйтесь улучшать этот ответ.